{ "cells": [ { "cell_type": "markdown", "id": "2e992491", "metadata": {}, "source": [ "# Semi-Discrete Form" ] }, { "cell_type": "markdown", "id": "746eb8d5", "metadata": {}, "source": [ "**강좌**: *기초 전산유체역학*" ] }, { "cell_type": "markdown", "id": "2f62f57a", "metadata": {}, "source": [ "## Semi-discrete Formulation\n", "\n", "앞선 수치 기법들은 시간에 대해서 1차 정확도 Euler Explicit 기법을 적용하였다.\n", "\n", "공간에 대해서만 차분식을 적용하는 경우 편미분 차분식은 상미분 방정식 해석으로 생각할 수 있다.\n", "\n", "공간에 대해 Central 기법을 적용하면 다음과 같다.\n", "\n", "$$\n", "\\frac{d u_{j}}{d t} = - a \\frac{1}{2 \\Delta x} \\left (u_{j+1} - u_{j-1} \\right).\n", "$$\n", "\n", "이를 각 격자점에 대해 풀어서 표현하면\n", "\n", "$$\n", "\\frac{d}{dt} \n", "\\left [\n", "\\begin{matrix}\n", "u_1 \\\\ u_2 \\\\ u_3 \\\\ u_4 \\\\ u_5\n", "\\end{matrix}\n", "\\right ]\n", "= - a \\frac{1}{2 \\Delta x}\n", "\\left [\n", "\\begin{matrix}\n", " 0 & 1 & 0 & 0 & 0 \\\\\n", "-1 & 0 & 1 & 0 & 0 \\\\\n", " 0 &-1 & 0 & 1 & 0 \\\\\n", " 0 & 0 &-1 & 0 & 1 \\\\\n", " 0 & 0 & 0 &-1 & 0 \n", "\\end{matrix}\n", "\\right ]\n", "\\left [\n", "\\begin{matrix}\n", "u_1 \\\\ u_2 \\\\ u_3 \\\\ u_4 \\\\ u_5\n", "\\end{matrix}\n", "\\right ]\n", "$$\n", "\n", "즉 초기치 상미분 방정식 $y'=f(y,t), ~y(0)=y^0$ 형태로 생각할 수 있다.\n", "\n", "몇 가지 상미분 방정식 해석 방법을 적용해보자.\n", "\n", "### Revisit Explicit Euler Method\n", "Euler Explicit Method는 다음과 같다.\n", "\n", "$$\n", "y_j^{n+1} = y_j^n + \\Delta t f(y^n, t_n)\n", "$$\n", "\n", "### 정확도\n", "- 수치해석시 오차는 다음과 같다.\n", " * Trunaction Error\n", " * Round-off Error\n", " \n", "- Local truncation error (LTE)\n", " * Euler 기법의 경우 매 시간마다 오차가 발생한다.\n", " * LTE가 누적되어 Global truncation error가 된다. \n", " * Taylor Expansion 적용하면\n", " \n", " $$\n", " y_{n+1} = y_n + h \\frac{dy}{dt} + \\frac{h^2}{2!} \\frac{d^2y}{dt^2} + O(h^3)\n", " $$\n", " \n", " 즉 오차는 다음과 같다.\n", " \n", " $$\n", " E_t = \\frac{h^2}{2!} \\frac{d^2y}{dt^2} + O(h^3) = O(h^2).\n", " $$\n", "\n", "- 전 시간 영역에 대해서 오차가 누적되므로 1차 정확도 ($O(h)$)가 된다.\n", "\n", "#### Stability of ODE\n", "안정성을 분석하기 위해 Model problem을 생각한다.\n", "\n", "$$\n", "\\frac{dy}{dt}=f(y,t) = f(y_0, t_0) + (t-t_0)f_t + (y - y_0) f_y + ... = \\lambda y + Others\n", "$$\n", "$$\n", "\\frac{dy}{dt}= \\lambda y, ~~~~\\lambda = \\lambda_R + i \\lambda_i\n", "$$\n", "\n", "$\\lambda_R < 0$ 인 경우 이 미분방정식은 해가 제한되어 (bounded) 있다.\n", "\n", "Explicit Euler에 적용하면 다음과 같다.\n", "\n", "$$\n", "y^{n+1} = y^n(1 + \\lambda h)\n", "$$\n", "\n", "여기서 $h=\\Delta t$ 이다. 정리하면 \n", "\n", "$$\n", "y^n = y^0 (1 + \\lambda h)^n = y_0 \\sigma^n\n", "$$\n", "\n", "여기서 $|\\sigma| < 1$ 일 때 수치 기법의 해가 발산하지 않는다." ] }, { "cell_type": "code", "execution_count": 2, "id": "7800c710", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "from matplotlib import pyplot as plt\n", "\n", "import numpy as np\n", "\n", "plt.style.use('ggplot')\n", "plt.rcParams['figure.dpi'] = 150" ] }, { "cell_type": "code", "execution_count": 3, "id": "68560b71", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Stability region of Explicit Euler')" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzcAAAKOCAYAAACbY+fTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAABcSAAAXEgFnn9JSAABKH0lEQVR4nO3deZyVZd0/8O+wr7JvhoKIyGIiprkLuSuaqClGapZmRhpk+qSiiWGFT+pTmkuFS5ZZimLGo6AW4g4oorhAyC4IMsgmyjJyfn/wm/PMwKxw5pwzN+/36zWv13Du61zne65zz+H+3Mt1F6RSqVQAAADUcnVyXQAAAEAmCDcAAEAiCDcAAEAiCDcAAEAiCDcAAEAiCDcAAEAiCDcAAEAiCDcAAEAiCDcAAEAiCDcAAEAiCDcAAEAiCDcAAEAiCDcAAEAiCDcAAEAiCDeQYAsWLIiCgoIoKCiICy+8cKf769q1axQUFETXrl3LXD5y5Mj06z3//PM1Xg/VV9lnxP/5/PPPY/To0XHIIYdEy5Yto06dOumxW716da7LyxvPP/98elxGjhxZZpvKvjsyobiGAQMG1Nhr1BYPPPBAejweeOCBXJcDWVUv1wVAbfDaa6/FX/7yl3j11VdjwYIFsXbt2mjQoEG0bt069t577+jbt28ceuihcdxxx0W7du22e/6CBQvS/8EMGDDAf74V+M1vfhOrV6+Oli1bxvDhw3NdDruozz77LI4++uh44403MtJfQUFBtZ/Tt2/fmDFjRkZen60b/AsWLIiIKDeEVdfzzz8fX/va16r9vGHDhsVvfvObjNQAlCbcQAXWrFkTF198cYwdO3a7ZUVFRfHZZ5/Fhx9+GJMnT47bb789CgoKYt26ddG0adNSbRcsWBA33nhj+t/CTfl+85vfxMKFC6NLly7CDTlzzz33pIPNfvvtF5dccknsvvvuUbdu3YiI7f7GyX8PPPBATJ48OSIyF26A/CPcQDk2b94cJ554YkyZMiUiIho0aBCnn356HHHEEdGxY8dIpVKxbNmymDFjRjz33HOxZMmSSKVSkUqlclx5zSne67mjunbtmujxqQ1Gjhxpw64KnnrqqYjYesRl4sSJsfvuu2es73HjxlWpXYsWLTL2mrm2s98dVZHr75Y+ffrETTfdVKW2e++9dw1XA7su4QbKceedd6aDTbdu3WLChAmxzz77lNk2lUrFa6+9FnfffXfUqeNSNqjtFi9eHBERHTp0yGiwiYgYNGhQRvsjP7Rt29ZnC3lAuIFyPPTQQ+nf77777nKDTcTWvbuHHXZYHHbYYdkoDahhGzdujIiIhg0b5rgSAKrDLmYox6xZs9K/H3300TvUR/EsQiUvOL3xxhvTs9iU/NnWokWL4ne/+12cffbZse+++0azZs2iQYMG0b59+xgwYEDcfPPNsWbNmmrXtGDBgrjiiiti3333jaZNm0br1q3jiCOOiLvvvju++OKLCp+7szMeVTRbWnHfCxcujIiIhQsXljlOxRMzHHLIIVFQUBANGjSI5cuXV/ray5cvj/r160dBQUEceuihO1T/tu9//fr1ceutt8Zhhx0W7du3jzp16pS553bz5s1x3333xde//vXYY489olGjRtGyZcvYf//94yc/+UmVT9lZvXp1/OxnP4v9998/mjVrFq1atYqDDjoofv3rX8f69evLrHFb1Zkt7Z133onLLrssevfuHS1atIjGjRvHXnvtFd/61rfi6aefrrTebWevWr9+fdxyyy1x0EEHRcuWLaNp06ax3377xYgRIzI++9hTTz0VQ4YMia5du0bjxo2jRYsW0adPn7j88svj3XffLfM5JWeYqmg9zNXsU5MnT466detGQUFB7LXXXhX+/c+fPz9atGgRBQUF0bx58/jggw9KLS9rPXjqqafi9NNPj86dO0fDhg2jc+fO8c1vfjNeffXVna69Ot8d//nPf+K//uu/4uCDD4527dpF/fr1o0WLFnHggQfGD3/4w/jXv/5V5ilo5c2WNmDAgCgoKEhfb1OybcmfXJ+uWVxnVSafqE7byuzs99OFF16YrqW47d/+9rc45ZRTonPnzlG/fv1o2bLlTtcJVZYCytSoUaNURKQiIrVw4cId6mPSpEnpPir72fZ5BQUFlT6nXbt2qRdffLHc158/f3667be//e3UxIkTUy1atCi3v4MPPjhVWFhYbn9dunRJRUSqS5cuZS6/4YYb0n1NmjSp0nrK6ruyn/vvvz+VSqVS9913X/qxm2++udyai40ePTrdfsyYMZW2L0vJ9z937txUz549t6vv9NNPL/WcN954I9WtW7cK31ODBg1S99xzT4WvPWPGjFSnTp3K7aNPnz6pRYsW7fRnlEqlUlu2bElde+21qTp16lRY96mnnppat25duTUXt+vfv3/qgw8+SPXq1avcvrp27ZpasGBBhWNQFWvXrk2dfPLJFdZdt27d1PXXX7/dc++///5qrYPVUd7fenVde+216X7OPffcMtts3rw5deihh1ZY77brwdChQ8t9v3Xq1EmNHDmy3JpKfs/dcMMNZbapbL0srnv48OGpunXrVvoZPP/889s9v+T6VlL//v2r9LmWV3tFSr73bV+3ukrWubNtS67LFa2vmfh++va3v51uO2vWrNRpp522XR8tWrSo9D1BpjgtDcrRvXv3eOeddyIi4o477ohf//rX1e5jv/32i3HjxsU777wT119/fUREDB48OM4999wKn7dhw4ZIpVLRp0+f+NrXvha9evWKNm3axIYNG2Lx4sXxxBNPxBtvvBErVqyIU089NWbMmFHpHtGFCxfG4MGDY+3atXH22WfHiSeeGE2aNIm33347xowZE4WFhTFt2rQYOHBgvPzyy+lZobLlD3/4Q3z22WdxySWXxIoVK6Jdu3bxhz/8Ybt2Bx54YEREnHvuuXHFFVfE6tWrY8yYMfFf//Vf5fadSqXi3nvvjYiI5s2bx+DBg3eq1o0bN8aZZ54Zs2bNiv79+8cZZ5wRnTp1iuXLl8e6devS7aZMmRLHHnts+qjKscceGyeffHLssccesWHDhnj11VfjwQcfjM8++ywuvfTSaNiwYZn3/1m2bFkcf/zxsWLFioiI6NmzZ1x44YXRtWvXKCwsjEcffTQmT54cgwcPjqKiop16bxERP/3pT9Pre7169WLIkCExYMCAaNiwYbz55ptx7733xqpVq2L8+PFxyimnxKRJkypcX9auXRsDBw6M2bNnx9e//vU4+eSTo3Xr1jFv3ry46667YvHixbFgwYK48MILY9KkSTtcd1FRUZx44onpIw2tW7eOiy66KA444IDYuHFjTJo0Kf7617/GF198EaNGjYqioqL45S9/mX7+Mccck77Yv6L1sHgdzIUbb7wx/vWvf8WUKVPib3/7W5x44onbrTM33nhjvPbaaxERcc4551R6T6nf/va38cQTT0Tbtm3j4osvjv333z8+++yzmDBhQjz22GOxZcuWGDlyZLRp0yYuu+yyGnlfqVQqzjrrrHjyyScjIqJu3boxaNCg+NrXvhbt27ePzz77LN5///2YOHFizJgxo1qTB9x0001RWFgY1113XfqoXVmTOvTs2TMzb6aWyNT3U0nDhw9PX596/vnnxz777BPr169PX78KWZHbbAX5a9SoUdvtkf/HP/6RWr16dbX7qsqezZIWLFiQevvttyts8/DDD6f3cF544YVltil5pCQiUvXq1Us98cQT27Vbvnx5qk+fPul2t956a5n91eSRm6q+RkmXX355pUchUqlU6t///ne63SWXXFJpv+XZ9ujS7bffXm7bdevWpds3bdo09dRTT5XZbs6cOak999wzFRGpJk2apD7++OPt2gwZMiT9mmeddVZq48aN27W56aabStW2o5/RSy+9lD5q2Lx589TLL7+8XZulS5eWOmo1evToMl+rZD0NGjRI/fOf/9yuzYoVK1Jdu3ZNt5s6dWqZfVXFL37xi3Q/vXv3Tn300UfbtXnhhRdSTZs2TR+ReOWVV8rsqzrrYVWUHIudNXfu3FTz5s1TEZFq1qxZas6cOellL774Yvp7Yc8990ytWrWqzD5KrgcRW4/8LV++fLt248aNS9WrVy+9fi5atGi7Npk4cnPzzTen+9hzzz0r/P57/fXXyzzKV/z88o6gVOfISFXV1iM3mfx+KnnkJmLrEcWyvqMgW4QbKMf69etTBx100HaH1wsKClL77LNP6pvf/Gbq9ttvT7377ruV9lXdcFNVxf+pNG7cOLVp06btlm8bbq6++upy+5o5c2Z6o2iPPfZIFRUVbdcm38LNu+++m+7vW9/6VrntSoaDadOmVdpveUqGm2984xsVtr3tttvSbR988MEK2/7rX/9Kt73ppptKLVu6dGl647JDhw6ptWvXltvPMcccs9Ph5vTTT08v//3vf1/ua82cOTNdV8eOHcvcmCm57v385z8vt68//OEP6XajRo0qt11FNm7cmGrfvn06xFf0d3n33XenX++MM84os01Nhpuq/lR0OtGDDz6YbnfwwQenNm3alFq1alV6Q7Ru3bqpF154odznl1wP6tWrl3rnnXfKbfvTn/403faaa67ZbvnOhpt169alWrdunQ7Ble3YKU+uw011fubPn79T9e1suMnU91MqVTrc7LnnnqnPPvus0vqhJplQAMrRpEmTeP755+Pyyy+PBg0apB9PpVIxZ86cePjhh+NHP/pR9OnTJ/r16xePPfZY1mssnp3t888/j7fffrvCtnXr1q3wppj77bdfnHjiiRGxdRrcadOmZazOmtK7d+846qijIiLisccei1WrVm3X5pNPPonHH388IiL69esXBx10UEZeu7LTcx588MGIiOjUqVN861vfqrDtMccck55u+Jlnnim17Kmnnkqfavad73wnmjdvXm4/l19+eaV1V2Tjxo3piQLatm0b3/nOd8ptu99++8XJJ58cEVtPm6voovO6detWOF7HHnts+vfyLvavzMsvvxwff/xxREQMHDgwevfuXW7b7373u9GmTZuI2Dq+mzZt2qHXzKXzzz8/vV5NmzYtrr/++vj+978fixYtioiIa6+9Nv23UZkTTzwx+vTpU+7y4cOHp087LP5byqSnn346Pvnkk4iIGDJkSHz5y1/O+GtQWqa+n7b13e9+Nxo3bpyZImEHueYGKtC0adO4/fbb4/rrr4/HHnssnnvuuXjttddiyZIlpdrNmDEjvvGNb8R3vvOdGDNmTMbudTNlypT4y1/+Eq+99lrMmzcv1q1bF5s3by6z7Ycffhhf+cpXyu2rT58+0aFDhwpf75hjjknfvHDatGk7PKtYNn3/+9+PF198MTZs2BB//vOf40c/+lGp5X/+859jw4YNERHxve99LyOvWa9evTjkkEPKXb527dp02OzUqVP6OoKKNGvWLCJKz9IXEfH666+nf992FqhtVba8MjNmzEhv6A8YMCDq169fYfvjjz8+/vnPf0bE1nW1f//+Zbbr0aNHtGrVqtx+vvSlL6V/LyugVsXUqVNL1VWRBg0aRP/+/ePxxx+PjRs3xowZM+KrX/3qDr3ujqjqTTwru7bnrrvuildeeSXmz58fN998c/rxQw89NH72s59VuZ6S4bIsHTt2jF69esU777wT//nPf2LNmjUZvcHoSy+9lP7961//esb6zbbq3MSzffv2NVxN+TL5/bStI488cucLhJ0k3EAVtGvXLi699NK49NJLIyLi448/jilTpsTTTz8dDz30UKxduzYiIu6///7Ye++9Y8SIETv1eps2bYqLL744/vznP1f5OcU1lKd79+6V9lGyzdKlS6v82rn0jW98I4YNGxYrV66MMWPGbBduiicSaNKkSQwZMiQjr9m6deto1KhRucsXLVoUW7ZsiYiI6dOnxxlnnFHlvov3YBf76KOP0r/vtddeFT63ZcuW0apVqx0OCCVfq6L7OhXr0aNH+vdly5aV265t27YV9lPyXjLFQbS6aqr2mpCpGz3utttu8de//jWOOuqo9NG95s2bx0MPPRT16lX9v/eqfje88847kUqlYtmyZRkNNx9++GH69169emWs32yrLTfxzOT307YyfcNb2BFOS4Md0L59+zjttNPirrvuirlz55baW3XzzTfH559/vlP9//CHP0wHm4YNG8YZZ5wRv/zlL+NPf/pTjB07NsaNGxfjxo0rdRpSZfeoadKkSaWv27Rp0/Tvn3766Q5Wn10lZ/CZOXNmqVl5XnvttZg5c2ZEbJ01KlMbZJWddrEj9x8qtu1sZyU/h5KfT3mq0qY8O/NaJWeJ21amjmRWpKZqz3df+tKXSr2Xgw46KLp161atPnL93VByx0zxEQJqTia/n7bllDTygXADO6lt27bx8MMPp/eUrlu3rtQpMtW1cOHC9NGGzp07x3vvvRePP/54XHPNNXHBBRfEWWedFYMGDYpBgwbFvvvuW+V+P/vss0rbFE8JGlG7NjK+//3vp29m98c//jH9eMnfM3VKWlWUHLsLL7wwUlsnb6nyT0klNyqr8hlWpU1V6q7u+lLRtUDZUJtr31FbtmyJ888/v9TG6qRJk+Luu++uVj+5/m7Ybbfd0r/Xlp0quVZ85GVHZPL7CfKRcAMZ0Llz51KnuezMKV0l77599dVXV7gXtvgu6lWx7R3KK2tTm04v2GeffeKYY46JiIi///3v8emnn8a6devikUceiYit58IffvjhWaun5NgV3ytpR3Xq1Cn9+/z58ytsu3r16kpPG6nqa82ZM6fS9iXblHxuLtTm2nfUr371q5g8eXJEbL1upvjI5E9+8pN4//33q9xPdb4bCgoKomPHjjtQbfk6d+6c/v29997LaN+1ScnTMyub5KKwsHCHXyeT30+Qj4QbyJCSM6ptu2ez5Gk5le35Wr58efr3vffeu8K2lc1cU9K7775bqu+ylLyB4sEHH1zlvjOpeKyqu4fw+9//fkRs3fP78MMPx8MPP5zeC5zNozYRW6/RKr524I033qhWCN1Wydndnn/++QrbFm/o7qgDDjggvR4///zzlZ6C8txzz6V/z+YF+WUp+fol6yrL5s2b02PVsGHD6Nu3b43WVhOmTJkSI0eOjIitG6t///vf46677oqIrbMnDhkypMqzwP373/+ucPmyZcvSYalHjx4Zvd4mIkrN6laVi9t3VHW+h3Oh5KQb205aU9Lq1avjP//5zw6/Tia/nyAfCTdQjsqCQEkLFy5MX9sREdtNq1oy7JQ8vaMsJc9/nzt3brnt/vGPf8Rbb71V5Rq/+OKLuP3228td/t5778XEiRMjYuue1FyFm+KxqmyctjVo0KD0HuU//vGP6VPSGjZsGOeff35mi6yCCy64ICK2bkRdffXVO9zPwIED06c83n///RWetnPHHXfs8OtEbB2rU045JSIiVqxYkZ4utizvvfde/O///m9EbJ1Nq3ha8lw54ogj0rMBjh8/PmbPnl1u2/vvvz+953vgwIGldkzUBuvWrYtvfetbUVRUFAUFBfGnP/0p2rRpE0OGDInzzjsvIrbOfHfNNddUqb8JEyZUeKTn9ttvT1/Td+aZZ+78G9jGySefHK1bt46IiIcffrjUd2kmVed7OBdKTl9eckfTtu66665Kr7GsTKa+nyAfCTdQjoMPPjguvvjiUlPxluXDDz+Ms846K/2fzWGHHbbdqWQlZ7maPn16hf2V3AN9yy23lDnz1dSpU+O73/1upe9hW7/+9a9j/Pjx2z2+YsWKOPfcc9N76kve1yLbisdq5cqV6Xt2VEX9+vXTYzJt2rT053bWWWelN5yy6bLLLos99tgjIiL+9re/xY9+9KPYuHFjue3XrFkTv/3tb7c76tCpU6c455xzImLrHvQLL7ywzD3yv/jFL+Jf//rXTtd95ZVXpq9f+vGPf1xqgoZiy5Yti7PPPju9vvz4xz/OeUBo0KBBDBs2LCK2Hpk5++yz0/e9KemVV16JK6+8MiK27sm/6qqrslpnJvzwhz9M7/j4yU9+Escdd1x62Z133pn+G/qf//mfePbZZyvtr6ioKAYPHhwrVqzYbtk///nPuOWWWyJi646XH/zgB5l4C6U0bdo0vYG9adOmOO200yoMODNmzNihow3V+R7OheL7RkVsPeWwrO/+p59+On7+85/v9Gtl6vsJ8pGpoKEcmzZtinvvvTfuvffe6N69exx99NFxwAEHRLt27aJOnTqxfPnyePXVV+OJJ55Iz47WrFmz9KkhJbVq1Sr69esXb775ZkyaNCkuvfTSOPbYY0tdyHzSSSdFxNZwdPDBB8e0adNiwYIF0bNnz7j00ktj3333jc8//zwmTZoUf/vb3yKVSsWQIUPir3/9a5Xez4ABA2LGjBnx9a9/Pc4+++w48cQTo0mTJvH222/HmDFj0hs2X/3qV9Mbiblw7LHHpk9NOfPMM+MHP/hBdOrUKX1KyZe//OVS90Up6Xvf+16MHj261MW2l1xySc0XXYZmzZrFE088EQMGDIh169bFHXfcEWPHjo1zzjkn+vbtG7vttlusW7cu5s+fH1OnTo1///vfsWnTpjKn/7711lvj2WefjRUrVsRjjz0Wffv2jQsvvDD22muvWLFiRTz66KMxefLkOOyww2LRokWxZMmSHZ6h7Igjjoif/OQnccstt8TatWvjyCOPjPPOOy8GDBgQDRo0iBkzZsSYMWPS1/YceeSR8ZOf/GSnxipTrrrqqvjnP/8Zr776asycOTN69+4dF198cfTt2zc2btwYzz//fDz00EPpUPbTn/40J/dyeuKJJ6rcduDAgaXuN/Twww+n15F+/frFL37xi1Ltd9ttt3jooYfiqKOOii+++CK+/e1vx9tvv13hdNyDBg2KJ554Ivr06RPf+9734stf/nJ89tlnMXHixHj00UfTp3DdfPPN6Q3iTLvyyivjpZdeiieffDIWLlwY/fr1izPOOCMGDBgQ7du3j88//zxmz54dzzzzTLz++usxadKk6NKlS7Ve49hjj00fvb7ooovixz/+cXTp0iW9I6d79+5Vmha7PIWFhVX+bFu0aBFf+9rXSj128MEHR//+/WPy5MnxwQcfxIEHHhiXXnppdOvWLT755JOYMGFC/OMf/4gePXpEkyZN4s0339zhWjP5/QR5JwWU6fjjj08VFBSkIqJKP3369ElNmzat3P6eeuqpVN26dct9fklz585NdenSpdy2DRs2TI0ZMyZ1//33px+7//77t3vN+fPnp5d/+9vfTk2cODHVokWLcvs9+OCDU4WFheW+h+KaunTpUubyG264Id3XpEmTKq2nLOvWrUv16NGj3BrLep8lnXzyyem2++yzT4Vtq6uy91+W9957L9W3b98qrUMNGzZMPf3002X28+abb6Y6depU4fq3cOHC1Je+9KVURKT233//Mvup7DNKpVKpLVu2pK655ppUnTp1Kqx34MCBqXXr1pX73ovb9e/fv9Jxqk7biqxZsyZ10kknVVh33bp1U9ddd12F/ezIZ12Rqn6PbPuzatWqdB/z589P//02adIk9f7775f7ejfeeGO6j9NPP3275duuB0OHDi23hoKCgtQNN9xQ7mtNmjQp3ba8dlUZz02bNqWGDh1a6XoXEanJkydv9/zK1qGioqLUkUceWW6fFb3Hqrz36vz07du3zP4WLFiQ6tq1a7nP23fffVP/+c9/Uv37908/VpbK/m8olonvp29/+9vpNvPnz6/2GEKmOS0NyvHMM8/EokWL4t57743vfOc78dWvfjXatWsXDRo0iPr160fr1q2jX79+8d3vfjeefPLJmDFjRqmLv7d18sknx8svvxxDhgyJvfbaq8L7AXTr1i2mT58e1157bfTu3TsaNWoUzZo1i3333Tcuu+yymD59elx00UXVfk8nnHBCzJgxI4YPH57e+9eiRYs47LDD4s4774xXXnkl2rRpU+1+M6lZs2bx2muvxYgRI+LAAw+MFi1aVOsoRMlTdLI9kUBZevXqFW+++WY88cQTccEFF8Q+++wTu+22W9StWzdatmwZffv2jQsuuCAeeOCB+Oijj9JH8LZ1wAEHxHvvvRfXXXdd9OnTJ/3ZHXjggXHzzTfHlClTYo899kifyrIzp+IVFBTEL3/5y5gxY0YMHTo0evbsGc2aNYtGjRpFly5d4txzz43//d//jfHjx+fdlOG77bZbPP300zF+/PgYPHhw7LnnntGwYcNo1qxZ9OzZM4YOHRpvvfVWjBo1KtelVssXX3wR5513Xnra59tuuy169uxZbvsRI0bEEUccERFbr8+75557Kuz/zjvvjPHjx8dpp50Wu+++ezRo0CB23333GDx4cLz88svpyQtqUv369ePOO++Mt956K4YNGxZf/vKXo2XLlum/la985Stx+eWXxwsvvBBHH310tfuvW7duPPvsszF69Og47LDDolWrVjk7/bY8Xbp0iTfffDNGjBgRvXv3jsaNG8duu+0W/fr1i1/96lfx+uuvV+kmtVWVqe8nyCcFqVQeThkCsIOOPPLIePnll6N+/frx4YcfRvv27XNdUta8++67sd9++0VExOWXX17hBBLs2kaOHBk33nhjRGy9eH3AgAG5LQggQxy5ARJj5syZ8fLLL0dExBlnnLFLBZuIKHW9l41VAHZFwg2QGD/72c/Sv//oRz/KYSWZ9+qrr8bmzZvLXX7vvfem70zfqVOnOO2007JVGgDkDbOlAbXWBx98EB988EGsXbs2HnvssfRMRccdd1z6eoOkuP766+Ott96KU045JQ466KDo2LFjFBUVxbx58+LJJ5+MqVOnptvec889pWbYAoBdRV6Fm/Hjx8esWbNi0aJFsWbNmti8eXO0bNkyevfuHaeffnqNTUEJ1E5/+ctf0tcNFGvdunWlF0/XVoWFhfHggw+We3PNRo0axT333BNf//rXs1wZAOSHvAo348aNiw0bNkSXLl1izz33jIiIxYsXxwsvvBCvvPJKXHXVVdGvX78cVwnkmzp16sSXvvSlOProo+PnP//5djdRTYLi2ayee+65mDdvXqxYsSLWrVsXLVu2jO7du8dxxx0XQ4cOjU6dOuW6VADImbyaLW3WrFnRrVu37e50/cwzz8SYMWOiVatWcffdd+/wzekAAIDkyquU0LNnz+2CTcTWe3N07NgxVq1aFUuXLs1BZQAAQL7Lq3BTkeKjNfXq5dWZdAAAQJ6oFeFm8uTJsXTp0ujUqdMud98KAACgavLyMMiTTz4Zixcvjo0bN8aSJUti8eLF0apVqxg2bJjrbQAAgDLlZbh56623YubMmel/t2nTJi6//PIqz4B0xRVXbPdY06ZNY9SoURmrEQAAyC95GW6uv/76iIhYv359LFq0KMaOHRsjR46Mc889N84888wcVwcAAOSjvJoKujxFRUVx3XXXxfz58+MXv/hFdO/efaf6W7ZsWbRp0yYitt4Uj5rXtm3biDDe2WTMs8t4Z5fxzj5jnl3GO/uMeXYVj3f9+vUz2m9eHrnZVr169eLwww+PefPmxRtvvLHT4aZknqsF2S5RjHf2GfPsMt7ZZbyzz5hnl/HOPmNeu9Waq/ObN28eERFr167NcSUAAEA+qjXh5r333ouIiA4dOuS4EgAAIB/lTbh5//3345VXXokvvvii1ONFRUXx9NNPxwsvvBANGjSIww8/PEcVAgAA+SxvrrlZvnx53HXXXdG8efPo1q1bNG/ePNatWxeLFi2KVatWRf369WPo0KHpi48AAABKyptw07t37zjjjDPivffei0WLFsXatWujXr160b59+zjkkEPilFNOiY4dO+a6TAAAIE/lTbhp3759fPOb38x1GQAAQC2VN9fcAAAA7AzhBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASIR6uS6g2MaNG+Ott96KN954I+bOnRsrVqyILVu2RMeOHeOQQw6JU089NRo1apTrMgEAgDyVN0duXnrppbjlllti0qRJkUqlom/fvtGzZ8/4+OOP45FHHolrrrkm1qxZk+syAQCAPJU3R27q1asXJ5xwQgwcODA6deqUfnzVqlUxevTomD9/fjzwwAMxbNiwHFYJAADkq7w5ctO/f/+4+OKLSwWbiIhWrVrFRRddFBERU6dOjaKiolyUBwAA5Lm8CTcV6dKlS0REbN68OdatW5fjagAAgHxUK8LN8uXLIyKibt260axZsxxXAwAA5KO8ueamIk899VRERBxwwAFRv379SttfccUV2z3WoEGDGD16dEREtG3bNurV2/rW27Vrl8FKKY/xzj5jnl3GO7uMd/YZ8+wy3tlnzLOreLwzLe+P3EyfPj0mTZoUdevWjcGDB+e6HAAAIE8VpFKpVK6LKM+HH34Y119/faxfvz4uvPDCOOWUUzLS70cffRRt27aNiIgVK1ZkpE8qVrwXxHhnjzHPLuOdXcY7+4x5dhnv7DPm2VU83lU5K6s68vbIzcqVK+OXv/xlrF+/Pk499dSMBRsAACCZ8jLcrF27Nm666aYoLCyMAQMGxPnnn5/rkgAAgDyXd+Hm888/j1/96lexZMmS+OpXvxqXXnppFBQU5LosAAAgz+VVuNm8eXP893//d8ydOzf69u0bw4cPjzp18qpEAAAgT+VNctiyZUv89re/jXfffTd69eoVV155ZY1NEQcAACRP3qSHCRMmxNSpUyMionnz5jFmzJgy251//vmx2267ZbM0AACgFsibcPPpp5+mfy8OOWU5++yzhRsAAGA7eRNuzjnnnDjnnHNyXQYAAFBL5c01NwAAADtDuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABJBuAEAABKhXq4LKGnevHnx9ttvxwcffBBz5syJVatWRf369eOhhx7KdWkAAECey6twM3bs2Hj99ddzXQYAAFAL5VW46dGjR3Tt2jX23nvv2HvvveOSSy7JdUkAAEAtkVfhZtCgQbkuAQAAqKVMKAAAACSCcAMAACSCcAMAACRCXl1zkylXXHHFdo81aNAgRo8eHRERbdu2jXr1tr71du3aZbW2XZXxzj5jXnP2vfv2arWf/YMf1VAluy7rd/YZ8+wy3tlnzLOreLwz3m+N9ApQS1U3uGSqTwEIAHZeQSqVSuW6iPKcc845NXITz48++ijatm0bERErVqzIaN+UrXgviPHOHmNeuSPHPpzrEir00je+mesS8pb1O/uMeXYZ7+wz5tlVPN7169fPaL+O3AC7jHwPM9vatl5hBwAqJtwAiVXbwkxlhB0AqJhwAyRK0gJNRUq+V0EHAIQbIAF2pUBTnuIxEHIA2JXlVbiZ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TBBuAACARBBuAACARMibqaB//etfx+rVqyMiYuXKlRERMXHixJg2bVpERLRs2TKuuuqqXJUHAADkubwJNwsWLNhudoqVK1emg445xwEAgIrkTbi58847c10CAABQi7nmBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASIR6uS4gImLJkiUxbdq0ePvtt+Ojjz6KNWvWRNOmTWPfffeNgQMHRq9evXJdIgAAkOfyItyMGjUqPvnkk2jcuHHss88+0aNHj/jwww9j6tSpMW3atLjgggti4MCBuS4TAADIY3kRbjp37hznnXdeHHrooVGv3v+V9Oyzz8Yf//jH+POf/xx9+/aNzp0757BKAAAgn+XFNTfXXXddHHnkkaWCTUTE8ccfH3379o0tW7bEq6++mqPqAACA2iAvwk1FunTpEhERq1atynElAABAPsv7cLN8+fKIiGjZsmVuCwEAAPJaXoebZcuWxfTp0yMi4qCDDspxNQAAQD4rSKVSqVwXUZYvvvgibrzxxpg1a1YcfvjhMXz48Co/94orrtjusQYNGsTo0aMjImLz5s3p63uKiooyUi8VM97ZZ8yzy3hnl/HOPmOeXcY7+4x5dhWPd0FBQWb7zUQnt956ayxevLhaz7nsssuie/fu5S6/7777YtasWdGhQ4e4+OKLd7ZEAAAg4TISblasWBFLly6t1nM2btxY7rKxY8fGs88+Gy1atIgRI0ZEs2bNqtX3bbfdVuHywsLCaNu2bURsrZ2a165du4gw3tlkzLPLeGeX8c4+Y55dxjv7jHl2FY93/fr1M9pvRsJN8elemTBhwoR45JFHokmTJjFixIjo2LFjxvoGAACSK68mFHjxxRfj/vvvj4YNG8bVV18dXbt2zXVJAABALZE34Wb69Olx1113Rd26dePKK6+Mnj175rokAACgFsmLcDNr1qz0dTLDhw+Pvn375rgiAACgtsnINTc76+abb45NmzZF+/btY9q0aTFt2rTt2vTs2TOOPfbYHFQHAADUBnkRbtavXx8RER9//HF8/PHH5bYTbgAAgPLkRbh55JFHcl0CAABQy+XFNTcAAAA7S7gBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASQbgBAAASoV6uC4iIWLhwYTz33HMxb968KCwsjHXr1kX9+vWjc+fOcdRRR8Xxxx8fdevWzXWZAABAHsuLcPP+++/HxIkTo127dtG5c+do3rx5rFu3LmbNmhVz5syJqVOnxrXXXhv16uVFuQAAQB7Ki7TQr1+/uOOOO6JD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JjFixAg3PSxHTa7jVF/btm0jYusGX1k++eSTUu2gNlu7dm3cdNNNUVhYGAMGDIjzzz8/1yXtcurVqxeHH354zJs3L9544w3hZidNnz49mjZtGmPGjCn1+ObNmyNi65Gd4m3wq6++eqd2VNlqLGHBggXlLluyZEksWbLEIeEsKCgoiGbNmkVhYWF8+umnZvHKoBdffDHuv//+aNiwYVx99dXWZ2qN4qlw58+fX+by4vvbFLeD2urzzz+PX/3qV7FkyZL46le/GpdeeqlrUHOk+LqQtWvX5riSZFi/fn289957ZS7btGlTetkXX3yxU68j3ETEOeecE+ecc06Zy+68886YPHlyDBs2LI444ogsV7ZrWr58eaxcuTIaN24cu+22W67LSYzp06fHXXfdFXXr1o0rr7wyevbsmeuSoMp69uwZTZo0ieXLl8f8+fO3mxJ6ypQpERFx4IEH5qI8yIjNmzfHf//3f8fcuXOjb9++MXz4cDN15VDxxnZZNx2neh555JEyH//444/jsssui9133z1+85vfZOS1/MWQE//4xz/S8/aXtHTp0rj99tsjlUpF//79falnyKxZs+K2226LiIjhw4dH3759c1wRVE+9evXSpwTfd999pWZFGz9+fCxcuDB69uzp1BFqrS1btsRvf/vbePfdd6NXr15x5ZVXOi27hr3//vvxyiuvbHekoKioKJ5++ul44YUXokGDBnH44YfnqEJ2hL8acuKZZ56Jv/71r9G1a9f0HpEVK1bEvHnzIpVKRa9evWLIkCE5rjI5br755ti0aVO0b98+pk2bFtOmTduuTc+ePePYY4/NQXXJ9etf/zpWr14dEf93rcjEiRPT49+yZcu46qqrclVerXPmmWfGzJkzY/bs2TFs2LDo2bNnFBYWxpw5c6J58+YxdOjQXJeYKNOnT4/HHnus1GNFRUUxYsSI9L/POussR8syZMKECTF16tSI2Ho61LbXJhQ7//zzndWQIcuXL4+77rormjdvHt26dYvmzZvHunXrYtGiRbFq1aqoX79+DB061LV8tYxwQ06ce+658eabb8bcuXPjrbfeik2bNkWzZs1i//33jyOOOCKOPvpoR20yaP369RGx9fDvxx9/XG474SazFixYECtWrCj12MqVK9NBp127drkoq9Zq0KBB3HDDDTFu3Lh46aWXYtq0adG0adPo379/DB482AZIhq1duzbmzJlT6rFUKlXqMdciZM6nn36a/r045JTl7LPPFm4ypHfv3nHGGWfEe++9F4sWLYq1a9dGvXr1on379nHIIYfEKaecYtKdWqgg5eYAAABAAtg1DgAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJIJwAwAAJML/A7kjsyWt655fAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Make grid\n", "x = np.linspace(-3, 3, 201)\n", "y = np.linspace(-3, 3, 201)\n", "X, Y = np.meshgrid(x, y)\n", "z = X + Y*1j\n", "\n", "# Amplication factor of Explicit Euler (z=lambda h)\n", "sig = 1 + z\n", "\n", "# Same scale of x and y\n", "plt.axis('equal')\n", "\n", "# Stability region\n", "plt.contourf(X,Y,abs(sig), levels=[0, 1])\n", "\n", "# Title\n", "plt.title('Stability region of Explicit Euler')" ] }, { "cell_type": "markdown", "id": "204f3c8b", "metadata": {}, "source": [ "#### Matrix Stability\n", "상미분 방정식의 안정성 개념을 편미분 방정식으로 확장하면, 앞선 연산 행렬의 고유치의 최대 값을 모델 방정식의 $\\lambda$ 로 생각하고 분석할 수 있다.\n", "\n", "위 연산 행렬의 고유치는 다음과 같이 알려져 있다.\n", "\n", "$$\n", "\\lambda_j = -\\frac{a}{\\Delta x} \\left ( i \\cos \\frac{\\pi j}{n_x} \\right),~~ j=1,2,..., n_x\n", "$$\n", "\n", "Explicit Euler 기법의 안정성 영역을 보면 imaginary 축에서는 아주 작은 시간 간격에도 안정하지 않다. \n", "즉 Central Method 가 안정하지 않음을 알 수 있다.\n", "\n", "이렇게 안정성을 분석하는 방법을 Matrix stability 라 한다. 다만 연산 행렬의 고유치를 구하는 과정이 쉽지 않다는 단점이 있다.\n", "\n", "#### Modified Wavenumber Analysis\n", "Von Neumann Stability 방법은 Fully-discrete formulation (time and space)에만 적용할 수 있다.\n", "\n", "매우 비슷한 접근법이지만 Semi-discrete formulation에 사용 가능한 방법이 Modified Wavenumber 분석법이다.\n", "이 방법 역시 선형 방정식이고, 경계 조건이 Periodic 일 때 사용 가능하다.\n", "\n", "우선 PDE Solution을 $u(x, t) = \\psi(t) e^{ikx}$ 로 생각한다. 이를 Wave 방정식에 적용하면 다음과 같다.\n", "\n", "$$\n", "\\frac{d \\psi}{dt} = -i a k \\psi(t).\n", "$$\n", "\n", "차분식에 이와 같은 Solution $u_j = \\psi(t) e^{ikx_j}$을 적용했을 때 Wavenumber 가 아래와 같이 변한다.\n", "\n", "$$\n", "\\frac{d \\psi}{dt} = -i a k' \\psi(t),\n", "$$\n", "\n", "여기서 $k'$ 를 Modified Wavenumber 이다.\n", "\n", "\n", "Central 기법 차분식에 대해 적용해보자.\n", "\n", "$$\n", "\\frac{du(x_j, t)}{dt} = - a \\frac{u(x_{j+1},t) - u(x_{j-1}, t)}{2 \\Delta x}\n", "$$\n", "\n", "위 해를 적용하면,\n", "\n", "$$\n", "\\frac{d \\psi}{d t} e^{ikx_j} = - \\frac{a}{\\Delta x} \\left (e^{ik(x_j + \\Delta x)} - e^{ik(x_j - \\Delta x)} \\right) \\psi \n", "$$\n", "\n", "이를 정리하면\n", "\n", "$$\n", "\\frac{d \\psi}{d t} = - \\frac{a}{2 \\Delta x} \\left (e^{ik\\Delta x} - e^{-ik\\Delta x} \\right) \\psi \n", "= - \\frac{a}{\\Delta x} i \\sin(k \\Delta x) \\psi = -i a k' \\psi.\n", "$$\n", "\n", "차분식에 의해 Modified wavenumber $k'$ 은 다음과 같다.\n", "\n", "$$\n", "k' = \\frac{1}{\\Delta x} \\sin(k \\Delta x)\n", "$$\n", "\n", "Stability 분석을 위해 모델 방정식 형태로 표현하면 $\\lambda = -i a k' $ 이다. 허수이므로 Euler Explicit 에서는 불안정하다." ] }, { "cell_type": "markdown", "id": "f55ef44c", "metadata": {}, "source": [ "### 더 정확한 Explicit Method\n", "정확도를 높이기 위해서 2가지 방법이 고려된다.\n", "\n", "- Multi-stage method\n", " - 한 시간 간격 (step) 을 전진하기 위해 여러 Stage를 계산함\n", " \n", "- Multi-step method\n", " - 한 시간 간격을 전진하기 위해 이전 여러 step의 결과를 활용함\n", " \n", "이들은 모두 Taylor expansion에서 고차항을 근사한다.\n", "\n", "#### Runge Kutta Method\n", "Multi-stage 기법에 대표적인 방법으로 다음과 같은 과정으로 계산한다.\n", "\n", "$$\n", "\\begin{align}\n", "y_{n+1} &= y_n + h \\sum_{i=1}^{s} b_i k_i \\\\\n", "k_1 &= f(t_n, y_n) \\\\\n", "k_2 &= f(t_n + c_2 h, y_n + h (a_{21} k_1)) \\\\\n", "k_3 &= f(t_n + c_3 h, y_n + h (a_{31} k_1 + a_{32} k_2)) \\\\\n", "... \\\\\n", "k_i & = f(t_n + c_i h, y_n + h \\sum_{j=1}^{i-1} a_{ij} k_j)\\\\\n", "...\n", "\\end{align}\n", "$$\n", "\n", "Runge Kutta 기법의 계수는 다음 Butcher tableau로 표기한다.\n", "\n", "$$\n", "\\begin{array}{c|cccc}\n", "c_1 & a_{11} & a_{12} & ... & a_{1s} \\\\\n", "c_2 & a_{21} & a_{22} & ... & a_{2s} \\\\\n", "... & ... & ,,, & ,,, \\\\\n", "c_s & a_{s1} & a_{s2} & ... & a_{ss} \\\\ \\hline\n", " & b_1 & b_2 & ... & b_s\n", "\\end{array}\n", "$$\n", "\n", "##### 2차 정확도 Runge Kutta Method\n", "$$\n", "\\begin{align}\n", "y_{n+1} &= y_n + h (b_1 k_1 + b_2 k_2) \\\\\n", "k_1 &= f(t_n, y_n) \\\\\n", "k_2 &= f(t_n + c_2 h, y_n + h a_{21} k_1) \n", "\\end{align}\n", "$$\n", "\n", "- 무수히 많은 2차 Runge Kutta 법이 있다.\n", "\n", " $$\n", " b_1 = 1 -b_2 \\\\\n", " c_2 = a_{21} = \\frac{1}{2 b_2}\n", " $$\n", "\n", "- 이 기법은 2차 정확도를 갖는다.\n", "\n", " * Huen's method\n", "\n", " $$\n", " \\begin{array}{c|cc}\n", " 0 & 0 & \\\\\n", " 1 & 1 & 0 \\\\ \\hline\n", " & 1/2 & 1/2\n", " \\end{array}\n", " $$\n", "\n", " * Midpoint method\n", "\n", " $$\n", " \\begin{array}{c|cc}\n", " 0 & 0 & \\\\\n", " 1/2 & 1/2 & 0 \\\\ \\hline\n", " & 0 & 1\n", " \\end{array}\n", " $$\n", "\n", "- 이 기법의 Stability는 다음과 같다.\n", "\n", "$$\n", "\\sigma = 1 + \\lambda h + \\frac{1}{2} (\\lambda h)^2\n", "$$\n", "\n", "\n", "##### 4차 정확도 Runge Kutta Method\n", "$$\n", "\\begin{array}{c|cc}\n", "0 & 0 & & & \\\\\n", "1/2 & 1/2 & 0 & & \\\\\n", "1/2 & 0 & 1/2& 0 & 0 \\\\\n", "1 & 0 & 0 & 1 & 0 \\\\ \\hline\n", "& 1/6 & 1/3 & 1/3 & 1/6\n", "\\end{array}\n", "$$\n", "\n", "- 이 기법은 4차 정확도를 갖는다.\n", "\n", "- 이 기법의 Stability는 다음과 같다.\n", "\n", "$$\n", "\\sigma = 1 + \\lambda h + \\frac{1}{2} (\\lambda h)^2 + \\frac{1}{6} (\\lambda h)^3 + \\frac{1}{24} (\\lambda h)^4\n", "$$" ] }, { "cell_type": "code", "execution_count": 7, "id": "212be986", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Stability region of RK2')" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzcAAAKOCAYAAACbY+fTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAABcSAAAXEgFnn9JSAABH6UlEQVR4nO3deXhV5bk34CcQAjLIPLUoKMikFfVonYUijlBnRWm1tloP9TjV6lct2mqxFk/VtlqlAw5HP2uPxaGWOtQBcRYqIjjAh8yCYIJAAGWI7O8PTvZJIAkJ7Oy9s7jv6+K6kr3WfteTd6+E9VvvWu8qSKVSqQAAAGjgGuW6AAAAgEwQbgAAgEQQbgAAgEQQbgAAgEQQbgAAgEQQbgAAgEQQbgAAgEQQbgAAgEQQbgAAgEQQbgAAgEQQbgAAgEQQbgAAgEQQbgAAgEQQbgAAgEQQboCdxvz586OgoCAKCgri/PPP3+H2evToEQUFBdGjR48ql99www3p7b300kv1Xg91t63PiP/1xRdfxJgxY+Lggw+ONm3aRKNGjdJ9t3LlylyXBxAREYW5LgBoeN588834v//3/8Ybb7wR8+fPj9LS0igqKop27dpFz549Y8CAAXHIIYfEkCFDomPHjlu9f/78+XH//fdHRMSgQYNi0KBB2f0BGpDf/OY3sXLlymjTpk1cccUVuS6HndTnn38eRx11VLz99tsZaa+goKDaZS1btowOHTrEvvvuG8OGDYsRI0ZEixYtamxv/vz5sccee0RERPfu3WP+/Pk1rr9y5co48cQT44033oiIiD59+sTzzz8f3bp1S68za9aseOaZZ+KVV16J6dOnx5IlS2Ljxo3Rtm3b2GeffeK4446L733ve9G+ffta/tRANgg3QK2tWrUqLrzwwhg/fvxWy8rKyuLzzz+Pjz/+OCZNmhR33HFHFBQUxOrVq7c6MJk/f37ceOON6e+Fm+r95je/iQULFkT37t2FG3Lm97//fTrY7LPPPnHRRRfFV77ylWjcuHFExDbDR12sWbMm1qxZE/Pnz48nn3wybrrppvjLX/4Shx56aEbaLy4ujmOPPTamTZsWERH77bdfPPvss9GpU6f0Ovvvv396+ZaWLVsWy5YtixdeeCFuvvnmGDt2bJx99tkZqQ3YccINUCsbN26M4447Lt56662IiCgqKoqTTz45Dj/88OjSpUukUqlYunRpTJs2LZ5//vlYvHhxpFKpSKVSOa68/mzr7PC29OjRI9H90xDccMMNccMNN+S6jLz31FNPRcTmEZdnn302vvKVr2Ss7ccff7zS96WlpfHOO+/Egw8+GMuXL4+FCxfGiSeeGNOmTYvu3bvv0LYWL14cQ4YMiZkzZ0ZExKGHHhpPPfVUtGnTptJ6M2bMiIiIRo0axeGHHx4DBw6Mnj17RvPmzWPevHnx5z//OaZPnx4rV66MESNGxKZNm2LEiBE7VBuQGcINUCt33XVXOtjsueee8cwzz8Ree+1V5bqpVCrefPPNGDt2bDRq5NY+aOgWLVoUERGdO3fOaLCJiDjllFO2eu28886La6+9NgYOHBgzZ86MlStXxk033RR/+tOftns7c+fOjaOPPjp9UuLoo4+Ov/3tb1WOOu26664xcuTIGDlyZOy+++5bLb/66qvj6quvjttvvz1SqVRccsklccIJJ0Tbtm23uz4gMxx1ALXy0EMPpb8eO3ZstcEmYvPZ3UMPPTQeeOCBaN68eTbKA+rR+vXrIyKiadOmWdtmp06d4tZbb01///e//3272/rggw/iyCOPTAebk046Kf7xj39UezndnDlz4uabb64y2ERsHtG59dZb46CDDoqIiBUrVsSTTz653fUBmSPcALVSfhlHRMRRRx21XW289NJLUVBQEN/4xjfSr914443pGZcq/tvSwoUL43e/+12ceeaZ0adPn2jZsmUUFRVFp06dYtCgQXHLLbfEqlWr6lzT/Pnz48orr4w+ffpEixYtol27dnH44YfH2LFj48svv6zxvduaLa02265utrTythcsWBAREQsWLKiyn8onZjj44IOjoKAgioqKYtmyZdvc9rJly6JJkyZRUFAQhxxyyHbVv+XPv3bt2rjtttvi0EMPjU6dOkWjRo2qPCu/cePGuPfee+Okk06K3XbbLZo1axZt2rSJfffdN370ox/V+nK/lStXxk9/+tPYd999o2XLltG2bds48MAD41e/+lWsXbu2yhq3VJfZ0t5777245JJLon///tG6devYZZddYo899ohvfetb8fTTT2+z3vLtlN9jtnbt2rj11lvjwAMPjDZt2kSLFi1in332iVGjRmV89rGnnnoqRowYET169IhddtklWrduHXvvvXdceuml8f7771f5nvvvvz9dc037Yfk+WB+OPPLI9NfLli2L0tLSOrcxderUGDhwYCxZsiQiIs4555x49NFHawxqtRmBKSgoiNNPPz39/fTp0+tcG1APUgC10KxZs1REpCIitWDBgu1qY+LEiek2tvVvy/cVFBRs8z0dO3ZMvfLKK9Vuf968eel1v/Od76SeffbZVOvWratt76CDDkqVlJRU21737t1TEZHq3r17lct/9rOfpduaOHHiNuupqu1t/bvvvvtSqVQqde+996Zfu+WWW6qtudyYMWPS648bN26b61el4s8/Z86cVN++fbeq7+STT670nrfffju155571vgzFRUVpX7/+9/XuO1p06alunbtWm0be++9d2rhwoU7/BmlUqnUpk2bUj/5yU9SjRo1qrHuYcOGpVavXl1tzeXrDRw4MPXRRx+l+vXrV21bPXr0SM2fP7/GPqiN0tLS1AknnFBj3Y0bN05df/31W733vvvuq9M+WBfV/a5vad26dZXWXbp0aZXrVfxdqvhZv/rqq5V+xy+66KLUl19+Wed6q3PXXXel2x45cmTG2gW2n3tugFrp1atXvPfeexERceedd8avfvWrOrexzz77xOOPPx7vvfdeXH/99RERMXz48G3ONLRu3bpIpVKx9957xze+8Y3o169ftG/fPtatWxeLFi2KJ554It5+++0oLi6OYcOGxbRp07Y5mrJgwYIYPnx4lJaWxplnnhnHHXdcNG/ePKZPnx7jxo2LkpKSmDJlSgwdOjRee+219KxQ2fLHP/4xPv/887jooouiuLg4OnbsGH/84x+3Wu+AAw6IiIizzz47rrzyyli5cmWMGzcu/s//+T/Vtp1KpeKee+6JiIhWrVrF8OHDd6jW9evXx2mnnRYzZ86MgQMHxqmnnhpdu3aNZcuWxerVq9PrvfXWW3H00UenR1WOPvroOOGEE2K33XaLdevWxRtvvBEPPPBAfP755zFy5Mho2rRplc//Wbp0aRxzzDFRXFwcERF9+/aN888/P3r06BElJSXx17/+NSZNmhTDhw+PsrKyHfrZIiJ+/OMfp/f3wsLCGDFiRAwaNCiaNm0a77zzTtxzzz2xYsWKmDBhQpx44okxceLEGveX0tLSGDp0aMyaNStOOumkOOGEE6Jdu3Yxd+7cuPvuu2PRokUxf/78OP/882PixInbXXdZWVkcd9xx6emO27VrFxdccEHst99+sX79+pg4cWL8+c9/ji+//DJGjx4dZWVlcfPNN6ffP3jw4PTN/jXth+X7YH2oOKrUtGnTSjOabctzzz0Xp5xySnz++ecREfGjH/2o0mVumVD+NzEidniyAyBDcp2ugIZh9OjRW52R/9vf/pZauXJlnduqOILzs5/9bJvrz58/PzV9+vQa13n44YdTjRs3TkVE6vzzz69ynYpndyMiVVhYmHriiSe2Wm/ZsmWpvffeO73ebbfdVmV79TlyU9ttVHTppZducxQilUqlXnzxxUpnsrfXlqNLd9xxR7Xrrl69Or1+ixYtUk899VSV682ePTu1++67pyIi1bx589Snn3661TojRoxIb/P0009PrV+/fqt1brrppkq1be9n9Oqrr6ZHDVu1apV67bXXtlpnyZIllUatxowZU+W2KtZTVFSU+vvf/77VOsXFxakePXqk15s8eXKVbdXGL37xi3Q7/fv3T33yySdbrfPyyy+nWrRokYqIVKNGjVKvv/56lW3VZT+sjYp9UZMzzjij0ohXdbYcuXniiSdSTZs2Tb92ww03ZKTuilasWJFq165dehvvvvtuxrcB1J1wA9TK2rVrUwceeOBWl6QUFBSk9tprr9Q555yTuuOOO1Lvv//+Ntuqa7ipre985zupiEjtsssuqQ0bNmy1fMtwc80111Tb1owZM9JhabfddkuVlZVttU6+hZv3338/3d63vvWtaterGA6mTJmyzXarUzHcnHHGGTWue/vtt6fXfeCBB2pc94UXXkive9NNN1VatmTJklRhYWEqIlKdO3dOlZaWVtvO4MGDdzjcnHzyyenlf/jDH6rd1owZM9J1denSpcrAVXHf+/nPf15tW3/84x/T640ePbra9Wqyfv36VKdOndIhvqbfy7Fjx6a3d+qpp1a5TjbDTWlpaWrSpEmpb37zm5XWe/rpp6ttr+LvUtOmTdOfRUFBQerXv/51Rmre0ve///30NocOHVov2wDqzoQCQK00b948Xnrppbj00kujqKgo/XoqlYrZs2fHww8/HJdddlnsvffesf/++8ejjz6a9RrLH/L3xRdfbPPm3saNG9f4UMzyJ5BHbJ4Gd8qUKRmrs770798/fQP2o48+GitWrNhqnc8++ywee+yxiNj8oMIDDzwwI9u+5JJLalz+wAMPRERE165d41vf+laN6w4ePDg93fA///nPSsueeuqp9KVm3/3ud6NVq1bVtnPppZdus+6arF+/Pj1RQIcOHeK73/1utevus88+ccIJJ0TE5svmyi8Fq0rjxo1r7K+jjz46/XV1N/tvy2uvvRaffvppREQMHTo0+vfvX+263/ve96J9+/YRsbl/N2zYsF3b3F5bTlCw6667xsCBAyvNjnb77bfH8ccfX6v21q9fn95Hdt999zjvvPMyXvODDz6YnpZ61113jTvuuCPj2wC2j3AD1FqLFi3ijjvuiI8//jjGjh0bp59+enz1q1/dar1p06bFGWecEd/73vdi06ZNGdv+W2+9FZdeemkcdNBB0b59+ygqKqp0UDRy5Mj0uh9//HGNbe29997RuXPnGtcZPHhw+uuGEG4iIv793/89Ijbfp/Tggw9utfzBBx+MdevWRUTE97///Yxss7CwMA4++OBql5eWlqbDZteuXePJJ5+MJ554osZ/LVu2jIjKs/RFRPzrX/9Kf10+61h1trV8W6ZNm5Y+0B80aFA0adKkxvWPOeaY9Nflz4SqSu/evWucjavi71RVAbU2Jk+eXGVdVSkqKoqBAwdGxOZgMG3atO3aZn3Yf//9Y8aMGfHDH/6w1u9p06ZNug8XLFgQQ4YM2e5+rMorr7wSF110UURsDmb33HNP7LnnnhlrH9gxJhQA6qxjx47pB9xFRHz66afx1ltvxdNPPx0PPfRQerrW++67L3r27BmjRo3aoe1t2LAhLrzwwioP1quzrSlje/Xqtc02Kq5TPo1svjvjjDPi8ssvj+XLl8e4cePisssuq7S8fCKB5s2bZ+yJ6u3atYtmzZpVu3zhwoXpkDt16tQ49dRTa932Z599Vun7Tz75JP31HnvsUeN727RpE23btt3uA9uK26rpuU7levfunf566dKl1a7XoUOHGtupOEVxeRCtq/qqvT6UT1oQsXnUdf78+fHQQw/F+++/H++880787ne/i7vvvrvWDwRu3bp1PPfcczFo0KBYsmRJvPPOO3HMMcfE888/H23atNmhWv/1r3/FsGHD0p/Lr3/96zjjjDN2qE0gs4zcADusU6dO8c1vfjPuvvvumDNnThxxxBHpZbfcckt88cUXO9T+f/zHf6SDTdOmTePUU0+Nm2++Of7rv/4rxo8fH48//ng8/vjjlS5D2tYzamrzcNGKD/hbs2bNdlafXRVnGJsxY0alEYQ333wzZsyYERERZ511VrRu3Toj29xll11qXL49zx8qt+VsZxU/h+oewFhRbdapzo5sq+IscVuq7UH6jqiv2uvDKaeckv53zjnnxLXXXhszZsxI/z7/4Q9/SM+uWFt77bVXTJw4Mbp27RoREW+//XYce+yxO7QvTp8+PY477rj0iZObbropLr/88u1uD6gfwg2QUR06dIiHH344Cgs3DwyvXr260iUydbVgwYL0aEO3bt3igw8+iMceeyyuvfbaOO+88+L0009PHxj16dOn1u2WTw9bk/IpiyMifZlUQ/Dv//7v6Qehlt8XsOXXmbokrTYq9t35558fqc2T2dT6X0UVD8Jr8xnWZp3a1F3X/aWme4GyoSHXHrH5cq9f//rX6XvCxowZU+e/I717946JEydGly5dImLzpaUVw0ldvP/++zFkyJD0SOL111+/wyPSQP0QboCM69atW6XLXHbkkq4XXnghfYB7zTXX1Hhte/lT1Gvjo48+qtM65Te4NwR77bVX+n6h//7v/441a9bE6tWr45FHHomIzfcbHXbYYVmrp2LfVXwuyPYoPxMfETFv3rwa1125cuVWl7Vt77Zmz569zfUrrlPxvbnQkGsv17hx47j99tsjImLTpk3xox/9qM5t9OnTJ1588cX0/XVvvfVWHHfccXUanZo5c2YcffTR6ecqXXPNNfHzn/+8zrUA2SHcAPWi4oxqW456VLwsZ8sz81tatmxZ+uuePXvWuO6WM2vV5P3336/UdlUqPkDxoIMOqnXbmVTeV9vqpy2VTyywZs2aePjhh+Phhx9OX6qUzVGbiM33aPXr1y8iNl8eVJcQuqWKs7u99NJLNa47adKk7d5ORMR+++2X3o9feumlbT4Q9Pnnn09//fWvf32Htr2jKm6/Yl1V2bhxY7qvmjZtGgMGDKjX2uriyCOPjG984xsREfHqq6+mZ6+ri379+sWLL76YfgDom2++Gccff3ytLjX96KOPYvDgwem/FT/60Y/il7/8ZZ1rALJHuAFqZVtBoKIFCxak7+2I2DxSUFHFsFPxcpiqVLw3Zs6cOdWu97e//S3efffdWtf45Zdf1jh96wcffBDPPvtsRGweicpVuCnvq23105ZOOeWU9OU4f/rTn9KXpDVt2jTOPffczBZZC+XT8aZSqbjmmmu2u52hQ4emL3m87777ajxAvfPOO7d7OxGb++rEE0+MiIji4uL0dNZV+eCDD+If//hHRER06dIlPS15rhx++OHp0YoJEybErFmzql33vvvui5KSkojY3L8VT0zkg2uvvTb99Y033rhdbfTv3z9efPHF6NixY0REvP7663HCCSfUuP/MmzcvBg8enJ6c4bLLLotbb711u7YPZI9wA9TKQQcdFBdeeGGlqXir8vHHH8fpp5+evqH/0EMP3epSsoqzXE2dOrXG9iqegb711lurnPlq8uTJ8b3vfW+bP8OWfvWrX8WECRO2er24uDjOPvvs9Jn6K664Iho3blzn9jOhvK+WL18eCxcurPX7mjRpku6TKVOmpD+3008/Pdq1a5f5Qrfhkksuid122y0iIv7yl7/EZZddFuvXr692/VWrVsVvf/vbrUYdunbtGmeddVZEbJ7V6/zzz6/yuSy/+MUv4oUXXtjhuq+66qr0/Us//OEPq5zieenSpXHmmWem95cf/vCHOQ8IRUVF6ZvdN27cGGeeeWb6uTcVvf7663HVVVdFxOZRwquvvjqrddbGMcccE//2b/8WEZsvK3vmmWe2q5299947XnjhhfRsda+++moMHTq0yhMHH3/8cQwePDgWLVoUEREXX3xx/Pa3v93OnwDIJlNBA7WyYcOGuOeee+Kee+6JXr16xVFHHRX77bdfdOzYMRo1ahTLli2LN954I5544on07GgtW7aMu+++e6u22rZtG/vvv3+88847MXHixBg5cmQcffTRlW5kLn9g36GHHhoHHXRQTJkyJebPnx99+/aNkSNHRp8+feKLL76IiRMnxl/+8pdIpVIxYsSI+POf/1yrn2fQoEExbdq0OOmkk+LMM8+M4447Lpo3bx7Tp0+PcePGpa+v//rXv57TGZGOPvroePLJJyMi4rTTTosf/OAH0bVr1/Tlal/72teqfNZQxObLz8aMGVPpWUPlz+fItpYtW8YTTzwRgwYNitWrV8edd94Z48ePj7POOisGDBgQu+66a6xevTrmzZsXkydPjhdffDE2bNhQ5fTft912Wzz33HNRXFwcjz76aAwYMCDOP//82GOPPaK4uDj++te/xqRJk+LQQw+NhQsXxuLFi7d7hrLDDz88fvSjH8Wtt94apaWlccQRR8S3v/3tGDRoUBQVFcW0adNi3Lhx6Xt7jjjiiO26N6Q+XH311fH3v/893njjjZgxY0b0798/LrzwwhgwYECsX78+XnrppXjooYfSoezHP/5xHHLIITmuumrXXnttesrlG2+8sdYP9NzS1772tXjhhRdi8ODBsXz58nj55Zdj6NCh8dRTT6VHidesWRODBw+O+fPnR8TmUDRkyJB44oknamy7Q4cOlWaKBHIkBVALxxxzTKqgoCAVEbX6t/fee6emTJlSbXtPPfVUqnHjxtW+v6I5c+akunfvXu26TZs2TY0bNy513333pV+77777ttrmvHnz0su/853vpJ599tlU69atq233oIMOSpWUlFT7M5TX1L179yqX/+xnP0u3NXHixG3WU5XVq1enevfuXW2NVf2cFZ1wwgnpdffaa68a162rbf38Vfnggw9SAwYMqNU+1LRp09TTTz9dZTvvvPNOqmvXrjXufwsWLEh99atfTUVEat99962ynW19RqlUKrVp06bUtddem2rUqFGN9Q4dOjS1evXqan/28vUGDhy4zX6qy7o1WbVqVer444+vse7GjRunrrvuuhrb2Z7PuibV/a5X58svv0z16dMn/Z4t94uKv0u1qXHatGmpdu3apd8zePDg1Oeff75VW3X5t6OfFZAZLksDauWf//xnLFy4MO6555747ne/G1//+tejY8eOUVRUFE2aNIl27drF/vvvH9/73vfiySefjGnTplW6+XtLJ5xwQrz22msxYsSI2GOPPWp8Vsqee+4ZU6dOjZ/85CfRv3//aNasWbRs2TL69OkTl1xySUydOjUuuOCCOv9Mxx57bEybNi2uuOKK6N27dzRv3jxat24dhx56aNx1113x+uuvR/v27evcbia1bNky3nzzzRg1alQccMAB0bp16zqNQgwZMiT9dbYnEqhKv3794p133oknnngizjvvvNhrr71i1113jcaNG0ebNm1iwIABcd5558X9998fn3zySbVn6Pfbb7/44IMP4rrrrou99947/dkdcMABccstt8Rbb70Vu+22W/oyxh25FK+goCBuvvnmmDZtWlx88cXRt2/faNmyZTRr1iy6d+8eZ599dvzjH/+ICRMm5N2U4bvuums8/fTTMWHChBg+fHjsvvvu0bRp02jZsmX07ds3Lr744nj33Xdj9OjRuS61Ro0aNYof//jH6e+3996bcgMGDIjnn38+2rZtGxERL774Ypx00kk7/EwuIPcKUqk6TsEDQINxxBFHxGuvvRZNmjSJjz/+OD1j1M7g/fffj3322SciIi699NIaJ5AAIBmM3AAk1IwZM+K1116LiIhTTz11pwo2EVHpfq9BgwblrhAAska4AUion/70p+mvL7vsshxWknlvvPFGbNy4sdrl99xzT4wdOzYiNs+w9s1vfjNbpQGQQ2ZLA0iIjz76KD766KMoLS2NRx99ND2705AhQ+Lwww/PbXEZdv3118e7774bJ554Yhx44IHRpUuXKCsri7lz58aTTz4ZkydPTq/7+9//Ppo0aZLDagHIlry652bChAkxc+bMWLhwYaxatSo2btwYbdq0if79+8fJJ5+cfkYCAFu74YYbtrrRul27djF58uTo2bNnjqqqH0OGDNnmc2yaNWsWv//97+M73/lOlqoCINfyauTm8ccfj3Xr1kX37t1j9913j4iIRYsWxcsvvxyvv/56XH311bH//vvnuEqA/NaoUaP46le/GkcddVT8/Oc/3+ohqklw1113xYQJE+L555+PuXPnRnFxcaxevTratGkTvXr1iiFDhsTFF18cXbt2zXWpAGRRXo3czJw5M/bcc8+tnuz8z3/+M8aNGxdt27aNsWPHbvfD2AAAgOTKq5TQt2/frYJNxOZnUXTp0iVWrFgRS5YsyUFlAABAvsurcFOT8tGawsK8upIOAADIEw0i3EyaNCmWLFkSXbt23eme0wAAANROXg6DPPnkk7Fo0aJYv359LF68OBYtWhRt27aNyy+/3P02AABAlfIy3Lz77rsxY8aM9Pft27ePSy+9tNYz/lx55ZVbvdaiRYsYPXp0xmoEAADyS16Gm+uvvz4iItauXRsLFy6M8ePHxw033BBnn312nHbaaTmuDgAAyEd5NRV0dcrKyuK6666LefPmxS9+8Yvo1avXDrW3dOnSaN++fURElJSUZKJEtqFDhw4Rob+zSZ9nl/7OLv2dffo8u/R39unz7Crv7yZNmmS03bwcudlSYWFhHHbYYTF37tx4++23dzjcVMxzDSDbJYr+zj59nl36O7v0d/bp8+zS39mnzxu2BnN3fqtWrSIiorS0NMeVAAAA+ajBhJsPPvggIiI6d+6c40oAAIB8lDfh5sMPP4zXX389vvzyy0qvl5WVxdNPPx0vv/xyFBUVxWGHHZajCgEAgHyWN/fcLFu2LO6+++5o1apV7LnnntGqVatYvXp1LFy4MFasWBFNmjSJiy++OH3zEQAA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1WfsHbkuAQAgq4QbAAAgEYQbAAAgEYQbABokl14CsCXhBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASAThBgAASITCXBewpQ0bNsQTTzwRr732WpSUlETLli1jwIABMXz48Gjfvn2uywMAAPJUXo3cbNiwIUaPHh3jx4+PdevWxYEHHhjt27ePl156KX784x/H0qVLc10iAACQp/Jq5Obxxx+PWbNmRe/eveO6666LZs2aRUTEhAkT4oEHHoixY8fGjTfemOMqAQCAfJQ3IzdlZWXxzDPPRETEBRdckA42ERHDhg2L7t27x4cffhhz587NVYkAAEAey5twM3PmzFi7dm107tw59thjj62WH3zwwRER8a9//SvbpQEAAA1A3oSbBQsWRERUGWwiIvbcc89K6wEAAFSUN/fclJSURERUOyNau3btKq1XkyuvvHKr14qKimLMmDEREdGhQ4coLNz8o3fs2HG76qVu9DdQH/xNyR5/x7NLf2efPs+u8v7OtLwZuVm3bl1ERDRt2rTK5eX34JSvBwAAUFHejNykUqkdWl7R7bffXuPykpKS6NChQ0REFBcX17pdtl/5WRD9DWSSvynZ4+94dunv7NPn2VXe302aNMlou3kzcrPLLrtERMT69eurXF7+esVZ1AAAAMrlTbgpH0lZvnx5lcs/++yzSusBAABUlDfhpnv37hERMW/evCqXlz/fpnw9AACAivIm3PTt2zeaN28ey5YtqzLgvPXWWxERccABB2S7NAAAoAHIm3BTWFgYxx9/fERE3HvvvZVmRZswYUIsWLAg+vbtG7169cpViQAAQB7Lm9nSIiJOO+20mDFjRsyaNSsuv/zy6Nu3b5SUlMTs2bOjVatWcfHFF+e6RAAAIE/lzchNxOYHbf7sZz+L008/PYqKimLKlCnx6aefxsCBA+OWW26JLl265LpEAAAgT+XVyE3E5oAzfPjwGD58eK5LAQAAGpC8GrkBAADYXsINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAACQCMINAA3SrB9clusSAMgzwg0AAJAIwg0AAJAIwg0AAJAIwg0klPsRAICdjXADAAAkgnADAAAkgnADAAAkgnADAAAkgnADAAAkgnADAAAkgnADAAAkgnADAAAkgnADAAAkgnADAAAkgnADAAAkgnADAAAkgnADQIMz6weX5boEAPKQcAMAACSCcAMJ5uw2ALAzEW4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AaFBePeOcXJcAQJ4SbgAAgEQQbiDhnOUGAHYWwg0AAJAIwg0AAJAIwg0AAJAIwg0AAJAIwg0ADYYJMgCoiXADOwEHhADAzkC4AQAAEkG4AQAAEkG4AQAAEkG4AQAAEkG4gZ2ESQVo6OzDAGyLcAMAACSCcAMAACSCcAMAACSCcANA3nO/DQC1IdzATsQBIgCQZMINAACQCIW5LiAiYt26dTF58uT46KOPYvbs2bFgwYIoKyuLESNGxCmnnJLr8gAAgAYgL8LN0qVL43e/+12uywAgD7mcEoDayotw06xZsxg8eHD06tUrevbsGW+99VY89thjuS4LEunVM86JI8Y/nOsyAAAyLi/CTZcuXWLkyJHp76dMmZLDagAAgIbIhAIAAEAiCDewE3IPAw2FfRWAuhBuAACARMiLe24y7corr9zqtaKiohgzZkxERHTo0CEKCzf/6B07dsxqbTsr/Z19+pwkqG7/tX9nnz7PLv2dffo8u8r7O+PtZqKR2267LRYtWlSn91xyySXRq1evTGwe2A6zfnBZ9Bl7R67LgGrN+sFluS4BgAYmI+GmuLg4lixZUqf3rF+/PhObrtLtt99e4/KSkpLo0KFDRGyunfpXfhZEf2ePPqehq2nftX9nnz7PLv2dffo8u8r7u0mTJhltNyPhpvxyLwAAgFwxoQDsxMxERb6ybwKwPYQbAAAgEYQbAAAgEfJmKuhf/epXsXLlyoiIWL58eUREPPvs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TqxcuTI2bNgQLVu2jB49esThhx8eRx11lFEbAACgRnkRbgAAAHaU4RAAACARhBsAACARhBsAACARhBsAACARhBsAACARCnNdQD4bP358PPLIIxERcfnll8fhhx+e44qSY8GCBfH888/H3Llzo6SkJFavXh1NmjSJbt26xZFHHhnHHHNMNG7cONdlJsbixYtjypQpMX369Pjkk09i1apV0aJFi+jTp08MHTo0+vXrl+sSE2fdunUxefLk+Oijj2L27NmxYMGCKCsrixEjRsQpp5yS6/IarA0bNsQTTzwRr732WpSUlETLli1jwIABMXz48Gjfvn2uy0uUuXPnxvTp09P78IoVK6JJkybx0EMP5bq0RFq/fn28++678fbbb8ecOXOiuLg4Nm3aFF26dImDDz44hg0b5nl/9WDChAkxc+bMWLhwYaxatSo2btwYbdq0if79+8fJJ58cu+22W65LTKw1a9bEFVdcEaWlpfGVr3wlfvOb32SkXeGmGkuWLInHH388CgoKwmzZmffhhx/Gs88+Gx07doxu3bpFq1atYvXq1TFz5syYPXt2TJ48OX7yk59EYaFdNBNGjx4dn332Weyyyy6x1157Re/evePjjz+OyZMnx5QpU+K8886LoUOH5rrMRFm6dGn87ne/y3UZibJhw4YYPXp0zJo1K9q2bRsHHnhgFBcXx0svvRRTp06Nm266Kbp06ZLrMhNj/Pjx8a9//SvXZew0Xn311fjDH/4QERG77bZbDBgwIL744ov4f//v/8UjjzwSr732Wtxwww3RunXrHFeaLI8//nisW7cuunfvHrvvvntERCxatChefvnleP311+Pqq6+O/fffP8dVJtN//dd/xerVqzPeriPHKqRSqfjDH/4QzZs3j7322ssf93qw//77x5133hmdO3eu9PrKlStj9OjR8d5778WLL74Yxx57bI4qTJZu3brFt7/97TjkkEMqBcbnnnsu/vSnP8WDDz4YAwYMiG7duuWwymRp1qxZDB48OHr16hU9e/aMt956Kx577LFcl9WgPf744zFr1qzo3bt3XHfddemz2BMmTIgHHnggxo4dGzfeeGOOq0yO3r17R48ePaJnz57Rs2fPuOiii3JdUqIVFhbGscceG0OHDo2uXbumX1+xYkWMGTMm5s2bF/fff39cfvnlOawyea6++urYc889o6ioqNLr//znP2PcuHHx+9//PsaOHeth8hk2Y8aMmDRpUgwZMiSef/75jLbtk6rCCy+8EB9++GGcd9550aJFi1yXk0idO3feKthERLRp0yZ9yc57772X5aqS67rrrosjjjhiq5GwY445JgYMGBCbNm2KN954I0fVJVOXLl1i5MiRMWTIkNhjjz38x7iDysrK4plnnomIiAsuuKDS5TnDhg2L7t27x4cffhhz587NVYmJc8opp8RZZ50V//Zv/xZt2rTJdTmJN3DgwLjwwgsrBZuIiLZt28YFF1wQERGTJ0+OsrKyXJSXWH379t0q2EREHHvssdGlS5dYsWJFLFmyJAeVJdeGDRviT3/6U3Tr1i2++c1vZrx9/9tuYeXKlfHQQw/F1772tTjyyCNzXc5Oqfwg0CVp2dG9e/eI2Hx2EPLVzJkzY+3atdG5c+fYY489tlp+8MEHR0QYaSeRyv9Ob9y4sV4u46Fqjkfqx1//+tdYtmxZXHjhhfVyf7Vws4V77703NmzYEBdeeGGuS9kprVmzJiZMmBAR4RrXLFm2bFlEhDOz5LUFCxZERFQZbCIi9txzz0rrQZKU/51u3LhxtGzZMsfV7BwmTZoUS5Ysia5du0anTp1yXU5iLFiwICZMmBCDBg2K/v3718s2RNEK3n777XjzzTfjrLPO2mpYmPrxySefxGOPPRapVCpWrVoVs2bNinXr1sWQIUPiiCOOyHV5ibd06dKYOnVqREQceOCBOa4GqldSUhIRUe2MaO3atau0HiTJU089FRER++23XzRp0iTH1STTk08+GYsWLYr169fH4sWLY9GiRdG2bdu4/PLLXVacIZs2bUrf0/7tb3+73rYj3PyPdevWxbhx46Jr165x8skn57qcncaqVati0qRJlV47/vjj4+yzz46CgoIcVbVz+PLLL+Puu++OjRs3xmGHHZY+8w35aN26dRER0bRp0yqXl9+DU74eJMXUqVNj4sSJ0bhx4xg+fHiuy0msd999N2bMmJH+vn379nHppZf6vzGDnnnmmfjoo4/i4osvjlatWtXbdhITbm677bZYtGhRnd5zySWXRK9evSIi4s9//nMsX748fvrTnzorUgs72t/l+vbtG4888khs2rQpSkpKYvLkyfHXv/413n333Rg1apSh4P+Rqf6u6N57742ZM2dG586dXYZZhfroc7bftqbkN2U/SfTxxx/HnXfeGalUKs4999zo0aNHrktKrOuvvz4iItauXRsLFy6M8ePHxw033BBnn312nHbaaTmuruErKSmJv/zlL9G/f/8YNGhQvW4rMeGmuLi4zrNZrF+/PiIiPvroo3j22WfjqKOOin322ac+ykucHenvqjRq1Cg6deoUw4YNi06dOsWtt94a9957b1xzzTU7WmoiZLq/x48fH88991y0bt06Ro0a5RruKmS6z9kxu+yyS0RU38flr3vIIUmxfPnyuPnmm2Pt2rUxbNiwOPHEE3Nd0k6hRYsW0a9fv7j22mvjuuuui//+7/+Offfd14mrHTRu3LgoKyvLysnUxISbMWPGbPd7p06dGqlUKhYuXBg33HBDpWWLFy+OiP89GDzkkEPi+OOP35FSE2FH+ntbDjrooGjWrFlMmzYtysrKzFISme3vZ555Jh555JFo3rx5jBo1ykMPq1Gf+zh116FDh4jYfMBXlc8++6zSetCQlZaWxk033RQlJSUxaNCgOPfcc3Nd0k6nsLAwDjvssJg7d268/fbbws0Omjp1arRo0SLGjRtX6fWNGzdGxOaRnfJj8GuuuWaHTlQ5aqxg/vz51S5bvHhxLF682JBwFhQUFETLli2jpKQk1qxZYxavDHrllVfivvvui6ZNm8Y111xjf6bBKJ8Kd968eVUuL3++Tfl60FB98cUX8ctf/jIWL14cX//612PkyJHuQc2R8vtCSktLc1xJMqxduzY++OCDKpdt2LAhvezLL7/coe0INxFx1llnxVlnnVXlsrvuuismTZoUl19+eRx++OFZrmzntGzZsli+fHnssssuseuuu+a6nMSYOnVq3H333dG4ceO46qqrom/fvrkuCWqtb9++0bx581i2bFnMmzdvqymh33rrrYiIOOCAA3JRHmTExo0b4z//8z9jzpw5MWDAgLjiiivM1JVD5QfbVT10nLp55JFHqnz9008/jUsuuSS+8pWvxG9+85uMbMtvDDnxt7/9LT1vf0VLliyJO+64I1KpVAwcONAf9QyZOXNm3H777RERccUVV8SAAQNyXBHUTWFhYfqS4HvvvbfSrGgTJkyIBQsWRN++fV06QoO1adOm+O1vfxvvv/9+9OvXL6666iqXZdezDz/8MF5//fWtRgrKysri6aefjpdffjmKiorisMMOy1GFbA+/NeTEP//5z/jzn/8cPXr0SJ8RKS4ujrlz50YqlYp+/frFiBEjclxlctxyyy2xYcOG6NSpU0yZMiWmTJmy1Tp9+/aNo48+OgfVJdevfvWrWLlyZUT8770izz77bLr/27RpE1dffXWuymtwTjvttJgxY0bMmjUrLr/88ujbt2+UlJTE7Nmzo1WrVnHxxRfnusREmTp1ajz66KOVXisrK4tRo0alvz/99NONlmXIM888E5MnT46IzZdDbXlvQrlzzz3XVQ0ZsmzZsrj77rujVatWseeee0arVq1i9erVsXDhwlixYkU0adIkLr74YvfyNTDCDTlx9tlnxzvvvBNz5syJd999NzZs2BAtW7aMfffdNw4//PA46qijjNpk0Nq1ayNi8/Dvp59+Wu16wk1mzZ8/P4qLiyu9tnz58nTQ6dixYy7KarCKioriZz/7WTz++OPx6quvxpQpU6JFixYxcODAGD58uAOQDCstLY3Zs2dXei2VSlV6zb0ImbNmzZr01+UhpypnnnmmcJMh/fv3j1NPPTU++OCDWLhwYZSWlkZhYWF06tQpDj744DjxxBNNutMAFaQ8HAAAAEgAp8YBAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBEEG4AAIBE+P8frHYNxRvqCAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Make grid\n", "xx = np.linspace(-3, 3, 201)\n", "yy = np.linspace(-3, 3, 201)\n", "X, Y = np.meshgrid(xx, yy)\n", "z = X + Y*1j\n", "\n", "# Amplication factor of Explicit Euler (z=lambda h)\n", "sig = 1 + z + 0.5*z**2\n", "\n", "# Same scale of x and y\n", "plt.axis('equal')\n", "\n", "# Stability region\n", "plt.contourf(X,Y,abs(sig), levels=[0, 1])\n", "\n", "# Title\n", "plt.title('Stability region of RK2')" ] }, { "cell_type": "code", "execution_count": 11, "id": "39bfe99e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Stability region of RK4')" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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EwoICJAk/elPfypyieejR4/q3nvvdb1f/vSnP9keEEJCQjR27FhJl0Zm7r33Xtd1b/L77rvv9MQTT0i6NEo4YcIEr9ZZFn369NGvf/1rSZeW2F6+fHmF2mnfvr2+/vpr12p169evV//+/cv9xQEAZ+OcGwBlkpOTo3fffVfvvvuuWrZsqe7du+vaa69VgwYNVKVKFaWlpWnjxo1asmSJa3W0sLAwzZo1q1BbderUUYcOHbRlyxatWbNGI0eOVK9evQrMgc+7YF+XLl3UqVMnxcfHKzk5WdHR0Ro5cqTatGmjs2fPas2aNfr4449lWZaGDx+ujz76qEzPJzY2VomJibrjjjt077336pZbblH16tW1bds2zZkzR+np6ZIuhau8g0Q79OrVS59//rkk6e6779Yf/vAHNWrUyDVd7eqrry72Ghy/+93vNH369ALXGnr00Uc9X3QRwsLCtGTJEsXGxiorK0uvvfaaFi5cqMGDBysmJka1atVSVlaW9u/fr7i4OK1evVo5OTlFLv/9yiuvaOXKlUpPT9eiRYsUExOjhx56SM2aNVN6ero++eQTrVu3Tl26dFFqaqoOHTpU4RWvunbtqscff1wvv/yyMjMz1a1bN913332KjY1VSEiIEhMTNWfOHNe5Pd26ddPjjz9eqb5ylwkTJuiLL77Qxo0btX37drVr104jRoxQTEyMsrOztXbtWn344YeuUPbkk0/qhhtusLnqoj311FMaNGiQpEujN2W9oOflrr76an399dfq2bOnjh8/rm+++Ub9+/fXsmXLyrSCIgAfYAFAGfTp08cKCAiwJJXpX/v27a34+Phi21u2bJkVGBhY7P3z27t3rxUVFVXsvqGhodacOXOsefPmuW6bN29eocfcv3+/a/uDDz5orVixwqpdu3ax7Xbq1MnKyMgo9jnk1RQVFVXk9ueee87V1po1a0qtpyhZWVlW69ati62xqOeZ32233ebat1WrViXuW16lPf+i7Ny504qJiSnTeyg0NNT68ssvi2xny5YtVqNGjUp8/6WkpFi/+tWvLEnWNddcU2Q7pb1GlmVZFy9etJ566imrSpUqJdbbv39/Kysrq9jnnrdfjx49Su2n8uxbklOnTlm33npriXUHBgZakydPLrGdirzWJSnub704Fy5csNq0aeO6z+Xvi/x/S2WpMTEx0apbt67rPj179rR++eUXjz4HAN7BtDQAZfLVV18pNTVV7777rn7729/q+uuvV4MGDRQSEqLg4GDVrVtXHTp00MMPP6zPP/9ciYmJBU7+vtxtt92mDRs2aPjw4WrWrFmJ10pp3ry5EhIS9PTTT6tdu3aqWrWqwsLC1KZNG40ePVoJCQl65JFHyv2c+vbtq8TERI0bN06tW7dW9erVVbt2bXXp0kVvvPGGvvvuO9WrV6/c7bpTWFiYvv/+e02aNEnXXXedateuXa5RiN69e7t+9vZCAkVp27attmzZoiVLluiBBx5Qq1atVKtWLQUGBio8PFwxMTF64IEH9N577+nIkSPFfkN/7bXXaufOnZo8ebLat2/veu2uu+46vfjii9q0aZOaNGnimsZYmal4AQEBeuGFF5SYmKhRo0YpOjpaYWFhqlq1qqKiojR06FD9+9//1tKlSx23ZHitWrX05ZdfaunSpRoyZIiuvPJKhYaGKiwsTNHR0Ro1apS2bt2qqVOn2l1qiapUqaInn3zS9XtFz73JExMTo1WrVqlOnTqSpNWrV+uOO+6o9DW5ANgvwLLKuQQPAMBndOvWTRs2bFBwcLAOHjzoWjHKH+zYsUNXXXWVJGnMmDElLiABADADIzcAYKjt27drw4YNkqS77rrLr4KNpALne8XGxtpXCADAawg3AGCoZ5991vXzY489ZmMl7rdx40adP3++2O3vvvuuZs+eLenSCmu33367t0oDANiI1dIAwBB79uzRnj17lJmZqUWLFmnJkiWSLp1307VrV3uLc7NnnnlGW7duVb9+/dSxY0dFRkYqNzdX+/bt0+eff664uDjXvm+++aaCg4NtrBYA4C2OOudm6dKlSkpKUmpqqk6dOqXz588rPDxc7dq105133um6RgIAoLApU6YUOtG6bt26iouLU4sWLWyqyjN69+5d6nVsqlatqjfffFMPPvigl6oCANjNUSM3ixcv1rlz5xQVFaUrr7xSknTgwAF98803+u677zRhwgR16NDB5ioBwNmqVKmiX/3qV+revbv+/Oc/F7qIqgneeOMNLV26VKtWrdK+ffuUnp6urKwshYeHq2XLlurdu7dGjRqlRo0a2V0qAMCLHDVyk5SUpObNmxe6svNXX32lOXPmqE6dOpo9e3aFL8YGAAAAwFyOSgnR0dGFgo106VoUkZGROnHihA4fPmxDZQAAAACczlHh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JdqwYYMyMjIUFhammJgYDRkyRPXq1bO7PKPs27dP27Ztc72HT5w4oeDgYH344Yd2l2ak7Oxsbd26VZs3b9bevXuVnp6uixcvKjIyUp07d9aAAQO43p8HLF26VElJSUpNTdWpU6d0/vx5hYeHq127drrzzjvVpEkTu0s01unTpzVu3DhlZmbqiiuu0KuvvuqWdgk3xTh8+LAWL16sgIAAsVq2+/30009asWKFGjRooMaNG6tmzZrKyspSUlKSdu/erbi4OD399NMKCuIt6g5Tp07Vzz//rGrVqqlVq1Zq3bq1Dh48qLi4OMXHx+uBBx5Q//797S7TKEePHtXrr79udxlGycnJ0dSpU7Vr1y7VqVNHHTt2VHp6utauXauEhARNmzZNkZGRdpdpjIULF+qHH36wuwy/sX79er311luSpCZNmigmJkZnz57Vf/7zHy1YsEAbNmzQlClTVLt2bZsrNcvixYt17tw5RUVF6corr5QkHThwQN98842+++47TZgwQR06dLC5SjP985//VFZWltvb5cixCJZl6a233lL16tXVqlUrPtw9oEOHDnrttdfUsGHDArefPHlSU6dO1Y8//qjVq1erb9++NlVolsaNG+u+++7TDTfcUCAwrly5Uu+8844++OADxcTEqHHjxjZWaZaqVauqZ8+eatmypVq0aKFNmzbp008/tbssn7Z48WLt2rVLrVu31uTJk13fYi9dulTvv/++Zs+ereeff97mKs3RunVrNW3aVC1atFCLFi306KOP2l2S0YKCgtS3b1/1799fjRo1ct1+4sQJTZ8+Xfv379d7772nsWPH2lileSZMmKDmzZsrJCSkwO1fffWV5syZozfffFOzZ8/mYvJutn37dq1bt069e/fWqlWr3No2r1QRvv76a/3000964IEHVKNGDbvLMVLDhg0LBRtJCg8Pd03Z+fHHH71clbkmT56sbt26FRoJ69Onj2JiYnTx4kVt3LjRpurMFBkZqZEjR6p3795q1qwZ/zFWUm5urpYvXy5JeuSRRwpMzxkwYICioqL0008/ad++fXaVaJyBAwdq8ODB+vWvf63w8HC7yzFejx49NGLEiALBRpLq1KmjRx55RJIUFxen3NxcO8ozVnR0dKFgI0l9+/ZVZGSkTpw4ocOHD9tQmblycnL0zjvvqHHjxrr99tvd3j7/217m5MmT+vDD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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Make grid\n", "xx = np.linspace(-3, 3, 201)\n", "yy = np.linspace(-3, 3, 201)\n", "X, Y = np.meshgrid(xx, yy)\n", "z = X + Y*1j\n", "\n", "# Amplication factor of RK4 (z=lambda h)\n", "sig = 1 + z + 0.5*z**2 + z**3/6 + z**4/24\n", "\n", "# Same scale of x and y\n", "plt.axis('equal')\n", "\n", "# Stability region\n", "plt.contourf(X,Y,abs(sig), levels=[0, 1])\n", "\n", "# Title\n", "plt.title('Stability region of RK4')" ] }, { "cell_type": "markdown", "id": "85443a66", "metadata": {}, "source": [ "4차 Runge Kutta 기법을 안정성 영역은 $\\lambda h$ 가 imaginary 축에서도 2.83까지 안정하다.\n", "이를 적용한 Central difference 기법에 대해 경우 Modified wavenumber Analysis 결과는 다음과 같다.\n", "\n", "$$\n", "\\Delta t < \\frac{2.83}{|\\lambda|} = \\frac{2.83 a}{\\Delta x}\n", "$$\n", "\n", "즉\n", "\n", "$$\n", "CFL = \\frac{a \\Delta t}{\\Delta x} < 2.83.\n", "$$" ] }, { "cell_type": "markdown", "id": "34b08fcc", "metadata": {}, "source": [ "## 예제\n", "\n", "### Modified Wavenumber analysis\n", "Upwind 기법에 대한 Modified wavenumber 분석을 Real axis에서 수행하고, Euler Explicit 및 4차 Runge Kutta 기법을 적용했을 때 안정성을 분석하시오.\n", "\n", "### 수치 실험\n", "공간에 대해 Central, Upwind 차분법을 적용하고 시간에 대해서 4차 Runge Kutta 기법을 적용하자. Sine wave 문제를 해석해보자.\n", "* 계산 시간을 늘려보자 ($t=5, 10, 15, 20$)\n", "* 시간 간격을 늘려보고, Stability 결과와 비교해보자." ] }, { "cell_type": "code", "execution_count": 5, "id": "df5945fb", "metadata": {}, "outputs": [], "source": [ "def central_rhs(nx, u, dx, a, du):\n", " for i in range(1, nx+2):\n", " du[i] = -0.5*a*(u[i+1] - u[i-1])/dx" ] }, { "cell_type": "code", "execution_count": 6, "id": "da84a622", "metadata": {}, "outputs": [], "source": [ "def bc_periodic(u):\n", " # index (nx : -3), (nx+2 : -1)\n", " u[0] = u[-3]\n", " u[-1] = u[2]" ] }, { "cell_type": "code", "execution_count": 15, "id": "9be6399a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1QAAAJqCAYAAAAsZgE0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAABcSAAAXEgFnn9JSAADQQUlEQVR4nOzdeXxU9b3/8deZyb6TkISQQNgJm+yLsu+LqIgLVVuXamtva5XS2+3Wtte2Vlt/orXX2tZqq3VHAQEB2XcJu4LsW9hC9o3syZzfH0NOEhMEwoQzSd7Px+M+7vmcbT5zOpL5zPecz9cwTdNERERERERErprD7gRERERERESaKhVUIiIiIiIiDaSCSkREREREpIFUUImIiIiIiDSQCioREREREZEGUkElIiIiIiLSQCqoREREREREGkgFlYiIiIiISAOpoBIREREREWkgFVQiIiIiIiINpIJKRERERESkgVRQiYiIiIiINJAKKhERERERkQZSQSUiIiIiItJAPnYn0FKdP38e0zRte/3WrVsDkJmZaVsOzY2uqWfpenqerqln6Xp6nq6p5+maepaup+fZfU0Nw6BNmzbXdA4VVDYxTdPWgqpmHuJZuqaepevpebqmnqXr6Xm6pp6na+pZup6e15SvqW75ExERERERaSAVVCIiIiIiIg2kgkpERERERKSBVFCJiIiIiIg0kAoqERERERGRBlJBJSIiIiIi0kBqmy4iIiIitTTlFtaNqeq66Pp4TmNcU8MwPHauK6GCSkRERERwuVwUFxdTUlKiguEScnJyAPe1Es9ojGtqGAYBAQEEBgbicDT+DXkqqERERERaONM0ycvLw8fHh/DwcJxOp90peSUfH/dX54qKCpszaT4a45pWVlZSXFxMXl4eERERjT5ipYJKREREpIUrLi7G4XAQEhJy3W+Xakqqro2ukec0xjX18fEhJCSE/Px8iouLCQoK8ti566OmFCIiIiItXFlZGQEBASoUpNmouu2vrKys0V9LBZWIiIhIC1dRUYGvr6/daYh4lK+v73W5PVMFlYiIiEgLVtWAQqNT0txUfaYbu8mKCioREREREZEGUkElIiIiIiLSQCqoREREREREGkgFlYiIiIiISANpHioRERERka+Ij4+/7D533XUXL774YuMnI15NBZWIiIiIyCXcdddd1rLD4b65y+VyATBkyBBb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6IqDzgsLC3HkyBEYDIZ222tra/HGG29Ij/Za+jiWHKxZpydPnjTbg52Tk4MNGzZAFEXMmjWrw/hItlHz9dlWcnIympubMWTIEOnxZnPssY1aoj/cRzmGyo68+uqr0pgR04ec7777Tlo81svLC48//ni7c0yD4i/vNg0JCcHdd9+NzZs347nnnsOYMWOgVCpx6tQpaLVaaZagtlQqFR5++GGsW7cOmzdvxuHDh+Hn54fz58+jqqoKcXFxHT7g2io3NzesXLkSr7/+OjZs2IDo6Gi4u7vj9OnTaGhowLx58zB69OgO53VWnyZpaWkoKSmBl5cXxowZ02UM+/fvx8aNGxEaGgp/f3+o1WoUFBSgoKAAALBw4cJuD9SWk7XrdNOmTdi6dSvCwsLg5+eHlpYWZGdno6qqCmq1Gg8//HCHCT/YRs3XZ01NDd58802IooiAgAD88MMP+OGHHzqcGxcX167N9cU2etttt+H06dNIS0vDI488guHDh6O8vBwZGRlwd3fHn//853bH19bWorCw0OwYh/vuuw8ZGRlITk5GQkICBg8ejLy8POTl5SEwMNBsD8vMmTNx4sQJpKSkICEhAaNHj0ZdXR1SU1OldmtrCyJ3xVr1+cknnyAjIwMKhQJKpVKarv9yq1atkn6uqqrCq6++Cnd3d4SEhMDHxwe1tbXIyspCU1MTfH198eijj9rcbGBXYq06TU9Px/bt2+Hv74/AwEB4eHigtLQUFy9ehF6vR3R0NO66664Or8822vnfvInpSZMrfTFqr230+PHj+OKLL9pt0+l0ePrpp6XykiVLpJ6//nAf7Tt/EXRF2dnZKCsra7etoqJCSq78/f27db34+HgEBQVh165dOHfuHABjt/TChQs7XWBx2LBheOmll7Bt2zakpqYiOzsbgYGBiI+Px4IFC9qtCWTrJk2ahOeffx47duxARkYGdDodQkNDMXfuXItn4zHdhG+44YYr1sXs2bPh4eGB7OxsnD9/HlqtFh4eHpgwYQLmzJlzxYTMFlmzTm+//Xakp6ejoKAA+fn5EEURvr6+uPHGGxEfH9/p42psox01NzdLCVZubi5yc3PNHufv798uQeqLbdTBwQHPPfccdu7cicTERBw5cgSurq6YPn067rjjjm6NGfPw8JDa0pEjR5CSkgJPT0/cfPPNWLZsGdzc3Dqco1AosGbNGuzduxf79+/HsWPH4OTkhLi4ONxxxx0IDw+35tvtcdaqT9NYEoPBIPXim9M2oQoODsb8+fORkZGBkpISXLhwAWq1GsHBwRg/fjzmz59v9ndg66xVp2PHjkVFRQUyMzORk5ODxsZGODs7Y/jw4ZgyZQpmzpxp9n7HNtq1qqoqnDlzBkqlEtdff32Xx9prG62trUVGRka7baIotttWW1t7Vdeyl/uoIPbmwitERERERER2pO98FUtERERERGRjmFARERERERFZiAkVERERERGRhZhQERERERERWYgJFRERERERkYWYUBEREREREVmICRUREREREZGFmFARERERERFZiAkVERERERGRhZhQERERERERWYgJFRERERERkYWYUBEREREREVmICRUREREREZGFmFARERERERFZiAkVERERERGRhZhQERERERERWYgJFRERERERkYX+P9HMsfZRtrhCAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a = 1.0\n", "\n", "nx = 50\n", "cfl = 0.9\n", "t_target = 15.5\n", "\n", "# Make grid\n", "x = np.linspace(-1, 1, nx+1)\n", "dx = np.diff(x)[0]\n", "\n", "# Solution array\n", "u = np.empty(nx+3)\n", "u0 = np.empty_like(u)\n", "k1 = np.zeros_like(u)\n", "k2 = np.zeros_like(u)\n", "\n", "# Initialize\n", "u[1:-1] = np.sin(np.pi*x)\n", "bc_periodic(u)\n", "\n", "# Time step\n", "dt = cfl*dx/a\n", "\n", "# Calculation\n", "t = 0\n", "while abs(t - t_target) > 1e-8:\n", " # Adjust time step to reach target time\n", " dt = min(dt, t_target - t)\n", " \n", " # First stage\n", " u0[:] = u\n", " bc_periodic(u)\n", " central_rhs(nx, u, dx, a, k1)\n", " u += 0.5*dt*k1\n", " \n", " # Second stage\n", " bc_periodic(u)\n", " central_rhs(nx, u, dx, a, k2)\n", " u = u0 + dt*k2 \n", " \n", " # Update\n", " t += dt\n", " \n", "# Exact solution\n", "u_exact = np.sin(np.pi*(x-a*t))\n", "plt.plot(x, u_exact)\n", "plt.plot(x, u[1:-1])\n", "plt.legend(['Exact', 'Computed'])" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.2" } }, "nbformat": 4, "nbformat_minor": 5 }